Start · Sprachen · PHP · Referenz · mysqli_field_seek

mysqli_field_seek

Funktion

Setzt den internen Feldzeiger eines <code>mysqli_result</code>-Objekts auf die angegebene Spaltenposition.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_field_seek(mysqli_result $result, int $index): bool

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

Typ
bool
Beschreibung
Gibt 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();
Spaltenname: email Typ: 253 Länge: 255

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();
Index 3: created_at Index 2: email Index 1: name Index 0: id

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