Start · Sprachen · PHP · Referenz · mysql_field_flags

mysql_field_flags

Funktion

Liefert die Flags des angegebenen Feldes aus einem MySQL-Abfrageergebnis als Leerzeichen-getrennten String zurück.

seit PHP 4.0.0 Kategorie: db

Signatur

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

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

Typ
string|false
Beschreibung
Gibt die Flags des Feldes als Leerzeichen-getrennten String zurück, z. B. "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);
?>
Feld 'id': not_null primary_key auto_increment Feld 'name': not_null Feld 'email':

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);
?>
Das Feld darf nicht NULL sein.

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