Signatur
Beschreibung
mysql_field_flags() gibt die Flags des Feldes an Position $field_offset im Abfrageergebnis $result als Zeichenkette zurück. Die einzelnen Flags sind durch ein Leerzeichen getrennt, sodass sich der Rückgabewert leicht mit explode() in ein Array umwandeln lässt.
Mögliche Flags sind zum Beispiel: not_null, primary_key, unique_key, multiple_key, blob, unsigned, zerofill, binary, enum, auto_increment und timestamp. Die verfügbaren Flags hängen vom jeweiligen MySQL-Server und dem Spaltentyp ab.
Diese Funktion ist nützlich, wenn man die Metadaten eines Abfrageergebnisses programmatisch auswerten möchte, z. B. um zu prüfen, ob ein Feld als NOT NULL definiert ist oder ob es sich um einen Primärschlüssel handelt.
Achtung: Die gesamte mysql_*-Erweiterung wurde in PHP 5.5.0 als veraltet markiert und in PHP 7.0.0 vollständig entfernt. Für neue Projekte sollte stattdessen mysqli oder PDO verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | resource | Das MySQL-Ergebnis-Resource, das von mysql_query(), mysql_store_result() oder mysql_use_result() zurückgegeben wurde. |
|
| $field_offset Pflicht | int | Der numerische Offset des Feldes (nullbasiert). Gibt an, welches Feld des Ergebnisses untersucht werden soll. |
Rückgabewert
"not_null primary_key auto_increment". Bei einem Fehler (z. B. ungültiger Offset) wird false zurückgegeben.Beispiele
Flags eines Feldes ausgeben
<?php
$conn = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('testdb', $conn);
$result = mysql_query('SELECT id, name, email FROM benutzer', $conn);
// Flags für alle Felder im Ergebnis ausgeben
$numFields = mysql_num_fields($result);
for ($i = 0; $i < $numFields; $i++) {
$feldname = mysql_field_name($result, $i);
$flags = mysql_field_flags($result, $i);
echo "Feld '{$feldname}': {$flags}\n";
}
mysql_free_result($result);
mysql_close($conn);
?>
Prüfen, ob ein Feld NOT NULL ist
<?php
$conn = mysql_connect('localhost', 'benutzer', 'passwort');
mysql_select_db('testdb', $conn);
$result = mysql_query('SELECT id, name, email FROM benutzer', $conn);
$feldIndex = 1; // Feld 'name'
$flags = mysql_field_flags($result, $feldIndex);
if ($flags !== false) {
$flagArray = explode(' ', $flags);
if (in_array('not_null', $flagArray)) {
echo "Das Feld darf nicht NULL sein.\n";
} else {
echo "Das Feld erlaubt NULL-Werte.\n";
}
} else {
echo "Ungültiger Feld-Offset.\n";
}
mysql_free_result($result);
mysql_close($conn);
?>
// Wichtig · Fallstricke
Veraltet und entfernt: Die mysql_*-Erweiterung wurde in PHP 5.5.0 als deprecated markiert und in PHP 7.0.0 vollständig entfernt. Code, der diese Funktion nutzt, läuft auf modernen PHP-Versionen nicht mehr. Bitte migrieren Sie auf mysqli (z. B. mysqli_fetch_field()) oder PDO.
Die zurückgegebenen Flags sind vom verwendeten MySQL-Server und -Treiber abhängig; nicht alle Flags sind auf allen Serverversionen verfügbar. Das Parsen des Rückgabestrings per explode(' ', $flags) ist der empfohlene Weg, um einzelne Flags zu prüfen.