Signatur
Beschreibung
mysqli_field_tell() ermittelt die aktuelle Position des internen Spalten-Zeigers eines MySQL-Ergebnisses. Der Spalten-Zeiger bestimmt, welche Spalte beim nächsten Aufruf von mysqli_fetch_field() zurückgegeben wird. Der zurückgegebene Offset ist nullbasiert, d. h. der Wert 0 verweist auf die erste Spalte des Ergebnisses.
Die Funktion ist nützlich, wenn man mit mysqli_fetch_field() in einer Schleife über Spalten iteriert und dabei die aktuelle Position im Ergebnis nachverfolgen möchte – zum Beispiel um an einer bestimmten Stelle fortzufahren oder die Position zu protokollieren.
In Kombination mit mysqli_field_seek() lässt sich der Zeiger gezielt auf einen bestimmten Offset setzen, während mysqli_field_tell() die aktuelle Position ausließt. Dies erlaubt es, Teilbereiche der Spalten-Metadaten flexibel auszulesen und gegebenenfalls wieder zur gespeicherten Position zurückzukehren.
Die objektorientierte Entsprechung ist die Eigenschaft mysqli_result::$current_field.
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. |
Rückgabewert
0 bedeutet, dass der Zeiger auf die erste Spalte zeigt.Beispiele
Aktuelle Spaltenposition vor und nach mysqli_fetch_field ermitteln
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindung fehlgeschlagen: ' . $mysqli->connect_error);
}
$result = $mysqli->query('SELECT id, name, email FROM benutzer LIMIT 1');
// Aktuelle Position vor dem ersten fetch
echo 'Position vor fetch_field: ' . mysqli_field_tell($result) . PHP_EOL;
// Erste Spalte abrufen
$field = $result->fetch_field();
echo 'Abgerufene Spalte: ' . $field->name . PHP_EOL;
// Aktuelle Position nach dem ersten fetch
echo 'Position nach fetch_field: ' . mysqli_field_tell($result) . PHP_EOL;
$result->close();
$mysqli->close();
Spaltenposition speichern und mit mysqli_field_seek wiederherstellen
<?php
$mysqli = new mysqli('localhost', 'benutzer', 'passwort', 'testdb');
if ($mysqli->connect_errno) {
die('Verbindung fehlgeschlagen: ' . $mysqli->connect_error);
}
$result = $mysqli->query('SELECT id, name, email FROM benutzer LIMIT 1');
// Zeiger auf zweite Spalte setzen
$result->field_seek(1);
// Aktuelle Position speichern
$gespeichertePosition = mysqli_field_tell($result);
echo 'Gespeicherte Position: ' . $gespeichertePosition . PHP_EOL;
// Zweite Spalte abrufen
$field = $result->fetch_field();
echo 'Spalte bei Position 1: ' . $field->name . PHP_EOL;
// Zurück zur gespeicherten Position
$result->field_seek($gespeichertePosition);
echo 'Wiederhergestellte Position: ' . mysqli_field_tell($result) . PHP_EOL;
$result->close();
$mysqli->close();
// Wichtig · Fallstricke
Hinweis zur objektorientierten Schreibweise: Anstelle von mysqli_field_tell($result) kann auch die Eigenschaft $result->current_field verwendet werden, die denselben Wert liefert.
Der Spalten-Zeiger wird automatisch um 1 erhöht, sobald mysqli_fetch_field() aufgerufen wird. Ein manuelles Zurücksetzen ist nur über mysqli_field_seek() möglich.