W3docs

fetch_field_direct

Erfahren Sie, wie mysqli_fetch_field_direct() in PHP Metadaten einer einzelnen Spalte anhand ihres Index aus einem Ergebnissatz abruft.

Die Funktion mysqli_fetch_field_direct() ruft die Metadaten einer einzelnen Spalte in einem Ergebnissatz ab, die direkt über ihre numerische Position ausgewählt wird. Metadaten beschreiben die Spalte selbst – ihren Namen, die Tabelle, aus der sie stammt, ihren Datentyp, ihre Länge und ihre Flags – und nicht die darin gespeicherten Zeilenwerte. Diese Seite behandelt die Syntax, das zurückgegebene object, ein vollständiges Beispiel sowie den Anwendungsfall im Vergleich zu verwandten Funktionen.

Syntax

mysqli_fetch_field_direct(mysqli_result $result, int $index): object|false

Im objektorientierten Stil lautet derselbe Aufruf $result->fetch_field_direct($index).

  • $result — ein mysqli_result-object, das von einer Abfrage wie mysqli_query() (oder mysqli_store_result() / mysqli_use_result()) zurückgegeben wird.
  • $index — die nullbasierte Position der gewünschten Spalte. Die erste Spalte ist 0, die zweite ist 1 usw. Ein Index außerhalb des gültigen Bereichs führt dazu, dass die Funktion false zurückgibt.

Der Rückgabewert ist ein object, dessen Eigenschaften die Spalte beschreiben. Ist der Index ungültig, gibt die Funktion false zurück.

Das Feldobjekt

Das zurückgegebene object stellt folgende Eigenschaften bereit:

EigenschaftBeschreibung
nameDer Name der Spalte (oder ihr Alias, falls einer verwendet wurde).
orgnameDer ursprüngliche Spaltenname, falls ein Alias gesetzt wurde.
tableDer Name der Tabelle, zu der die Spalte gehört (oder ihr Alias).
orgtableDer ursprüngliche Tabellenname, falls ein Alias gesetzt wurde.
defDer Standardwert der Spalte als string.
max_lengthDie maximale Breite der Spalte für den aktuellen Ergebnissatz.
lengthDie deklarierte Breite der Spalte, wie im Tabellenschema definiert.
decimalsDie Anzahl der Dezimalstellen bei numerischen Spalten.
typeEine ganzzahlige Konstante zur Identifikation des Datentyps (siehe unten).
flagsEin ganzzahliges Bitfeld mit Spalten-Flags (z. B. NOT NULL, Primärschlüssel).

Verwendung von mysqli_fetch_field_direct()

Übergeben Sie einen gültigen Ergebnissatz und den Index der Spalte, deren Metadaten Sie benötigen:

<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");

if (!$mysqli) {
    die("Connection failed: " . mysqli_connect_error());
}

$query = "SELECT * FROM my_table";
$result = mysqli_query($mysqli, $query);

if ($result) {
    // Metadata for the second column (index 1, zero-based)
    $field = mysqli_fetch_field_direct($result, 1);

    printf("Name:   %s\n", $field->name);
    printf("Table:  %s\n", $field->table);
    printf("Type:   %d\n", $field->type);   // integer type constant
    printf("Length: %d\n", $field->length);

    mysqli_free_result($result);
} else {
    echo "Query failed: " . mysqli_error($mysqli);
}

mysqli_close($mysqli);
?>

Hier stellen wir eine Verbindung mit mysqli_connect() her und prüfen, ob die Verbindung fehlgeschlagen ist. Wir führen eine Abfrage mit mysqli_query() aus und rufen bei Erfolg mysqli_fetch_field_direct($result, 1) auf, um die Metadaten der zweiten Spalte zu lesen (der Index ist nullbasiert). Wir geben einige Eigenschaften aus und geben den Ergebnissatz anschließend frei. Da type eine ganzzahlige Konstante und kein lesbarer Name ist, formatieren wir ihn mit %d.

Die Typkonstante auslesen

Die Eigenschaft type ist eine der MYSQLI_TYPE_*-Konstanten – eine ganze Zahl, kein Wort wie "varchar". Um daraus etwas Lesbares zu machen, können Sie die Konstanten selbst zuordnen:

<?php
$types = [
    MYSQLI_TYPE_DECIMAL   => 'DECIMAL',
    MYSQLI_TYPE_LONG      => 'INT',
    MYSQLI_TYPE_VAR_STRING => 'VARCHAR',
    MYSQLI_TYPE_STRING    => 'CHAR',
    MYSQLI_TYPE_DATETIME  => 'DATETIME',
];

$field = mysqli_fetch_field_direct($result, 0);
echo $types[$field->type] ?? "Unknown ({$field->type})";
?>

Wann verwenden

Verwenden Sie mysqli_fetch_field_direct(), wenn Sie bereits wissen, welche Spalte Sie benötigen, und diese per Index ansprechen können – zum Beispiel beim Erstellen eines generischen Tabellen-Renderers oder bei der Prüfung, ob die zweite Spalte wirklich den erwarteten Typ hat.

Fazit

mysqli_fetch_field_direct() liefert die Metadaten einer Spalte, die direkt über ihren nullbasierten Index angesprochen wird, und gibt ein object mit dem Namen, der Tabelle, dem Typ, der Länge und den Flags der Spalte zurück – oder false bei einem ungültigen Index. Die Funktion ergänzt die anderen mysqli_fetch_field*-Funktionen optimal, wenn Sie die Struktur eines Ergebnissatzes und nicht seine Zeilen untersuchen möchten.

Übung

Übung
Was macht die Funktion fetch_field_direct() in PHP?
Was macht die Funktion fetch_field_direct() in PHP?
Was this page helpful?