Start · Sprachen · PHP · Referenz · mysqli_field_tell

mysqli_field_tell

Funktion

Gibt die aktuelle Position (Offset) des Spalten-Zeigers innerhalb eines <code>mysqli_result</code>-Objekts zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_field_tell(mysqli_result $result): int

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

Typ
int
Beschreibung
Gibt den aktuellen Offset des Spalten-Zeigers als nullbasierten ganzzahligen Wert zurück. 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();
Position vor fetch_field: 0 Abgerufene Spalte: id Position nach fetch_field: 1

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();
Gespeicherte Position: 1 Spalte bei Position 1: name Wiederhergestellte Position: 1

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