Signatur
Beschreibung
mysqli_field_seek verschiebt den internen Zeiger, der beim Aufruf von mysqli_fetch_field verwendet wird, auf die Spalte mit dem angegebenen nullbasierten Index. Damit kann gezielt eine bestimmte Spalte angesteuert werden, ohne alle vorangehenden Felder nacheinander durchlaufen zu müssen.
Die Funktion ist besonders nützlich, wenn Sie Meta-Informationen (Name, Typ, Länge, Flags usw.) gezielt für eine bestimmte Spalte eines Abfrageergebnisses abfragen wollen. Im Anschluss an mysqli_field_seek liefert mysqli_fetch_field die Metadaten der Spalte an der neuen Zeigerposition.
Beachten Sie, dass der Index nullbasiert ist: Die erste Spalte hat den Index 0, die zweite den Index 1 usw. Die objektorientierte Entsprechung dieser Funktion ist mysqli_result::field_seek().
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $result Pflicht | mysqli_result | Das mysqli_result-Objekt, das von mysqli_query, mysqli_store_result oder mysqli_use_result zurückgegeben wurde. |
|
| $index Pflicht | int | Nullbasierter Spaltenindex, auf den der Feldzeiger gesetzt werden soll. Gültige Werte liegen zwischen 0 und mysqli_num_fields($result) - 1. |
Rückgabewert
true zurück, wenn der Feldzeiger erfolgreich gesetzt wurde, andernfalls false (z. B. bei einem ungültigen Index).Beispiele
Metadaten einer bestimmten Spalte auslesen
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');
$result = $mysqli->query('SELECT id, name, email FROM users LIMIT 1');
// Feldzeiger auf die dritte Spalte (Index 2 = email) setzen
mysqli_field_seek($result, 2);
$field = mysqli_fetch_field($result);
echo 'Spaltenname: ' . $field->name . PHP_EOL; // email
echo 'Typ: ' . $field->type . PHP_EOL; // 253 (VARCHAR)
echo 'Länge: ' . $field->length . PHP_EOL;
$result->free();
$mysqli->close();
Objektorientierte Variante mit field_seek()
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');
$result = $mysqli->query('SELECT id, name, email, created_at FROM users LIMIT 1');
$numFields = $result->field_count;
// Alle Spalten in umgekehrter Reihenfolge ausgeben
for ($i = $numFields - 1; $i >= 0; $i--) {
$result->field_seek($i);
$field = $result->fetch_field();
echo 'Index ' . $i . ': ' . $field->name . PHP_EOL;
}
$result->free();
$mysqli->close();
// Wichtig · Fallstricke
Nullbasierter Index: Ein häufiger Fehler ist die Verwendung eines 1-basierten Index. Der erste Spaltenindex ist immer 0. Ein Index außerhalb des gültigen Bereichs führt dazu, dass false zurückgegeben wird und der Zeiger unverändert bleibt.
Nur für Metadaten: mysqli_field_seek beeinflusst ausschließlich den internen Feldzeiger für mysqli_fetch_field, nicht den Zeilenzeiger für mysqli_fetch_row oder mysqli_fetch_assoc.