Signatur
Beschreibung
mysql_field_type() liefert den MySQL-internen Feldtyp (z. B. int, string, blob, date) des Feldes an der angegebenen Position innerhalb eines Ergebnisses, das zuvor per mysql_query() erzeugt wurde. Der Rückgabewert entspricht dem allgemeinen PHP-Typnamen, nicht dem genauen MySQL-Datentypnamen (z. B. wird TINYINT als int zurückgegeben).
Die Funktion ist nützlich, wenn man zur Laufzeit ermitteln möchte, welchen Typ ein bestimmtes Spaltenfeld hat, etwa um Ausgabe-Formatierungen oder Validierungslogik dynamisch anzupassen. Der Parameter field_offset ist nullbasiert – das erste Feld hat den Offset 0.
Achtung: Die gesamte mysql_*-Erweiterung ist seit PHP 5.5.0 als veraltet markiert und wurde in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollten stattdessen mysqli_fetch_field() oder PDO::getColumnMeta() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Das Ergebnis-Ressource-Handle, das von mysql_query() zurückgegeben wurde. |
|
| $field_offset Pflicht | int | Der nullbasierte Index (Offset) des Feldes innerhalb der Ergebnismenge. Das erste Feld hat den Offset 0. |
Rückgabewert
int, real, string, blob, date, datetime, timestamp, time, year, null, unknown). Bei einem Fehler oder ungültigem Offset wird false zurückgegeben.Beispiele
Feldtypen einer Tabelle ausgeben
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('beispiel_db', $link);
$result = mysql_query('SELECT id, name, preis, erstellt_am FROM produkte', $link);
$num_fields = mysql_num_fields($result);
for ($i = 0; $i < $num_fields; $i++) {
$feldname = mysql_field_name($result, $i);
$feldtyp = mysql_field_type($result, $i);
echo "Feld '$feldname' hat den Typ: $feldtyp\n";
}
mysql_free_result($result);
mysql_close($link);
Typ eines einzelnen Feldes prüfen und bedingt formatieren
<?php
$link = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('beispiel_db', $link);
$result = mysql_query('SELECT preis FROM produkte LIMIT 1', $link);
$typ = mysql_field_type($result, 0);
if ($typ === 'real' || $typ === 'int') {
$row = mysql_fetch_row($result);
echo 'Numerischer Wert: ' . number_format((float)$row[0], 2, ',', '.') . ' EUR';
} else {
echo 'Kein numerisches Feld.';
}
mysql_free_result($result);
mysql_close($link);
// Wichtig · Fallstricke
Deprecation-Hinweis: Die mysql_*-Funktionen sind seit PHP 5.5.0 veraltet (deprecated) und wurden in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion verwendet, ist auf modernen PHP-Versionen nicht lauffähig. Bitte auf mysqli_fetch_field() (Eigenschaft $field->type als Integer-Konstante) oder PDOStatement::getColumnMeta() migrieren.
Die zurückgegebenen Typnamen sind PHP-interne Bezeichnungen und entsprechen nicht exakt den MySQL-Datentypnamen. So werden TINYINT, SMALLINT, MEDIUMINT, INT und BIGINT alle als int gemeldet, während FLOAT und DOUBLE als real erscheinen.