Start · Sprachen · PHP · Referenz · mysql_field_type

mysql_field_type

Funktion

Gibt den Datentyp eines bestimmten Feldes aus einem MySQL-Abfrageergebnis als Zeichenkette zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

mysql_field_type(resource $result, int $field_offset): string|false

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

Typ
string|false
Beschreibung
Gibt den Feldtyp als Zeichenkette zurück (z. B. 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);
Feld 'id' hat den Typ: int Feld 'name' hat den Typ: string Feld 'preis' hat den Typ: real Feld 'erstellt_am' hat den Typ: date

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);
Numerischer Wert: 19,99 EUR

// 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.