Start · Sprachen · PHP · Referenz · cubrid_field_seek

cubrid_field_seek

Funktion

Setzt den Feldzeiger (Cursor) eines CUBRID-Ergebnisses auf den angegebenen Feld-Offset, sodass nachfolgende Feldoperationen an dieser Position beginnen.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_field_seek(resource $result, int $field_offset = 0): bool

Beschreibung

cubrid_field_seek() verschiebt den internen Feldzeiger eines CUBRID-Abfrageergebnisses auf einen bestimmten Spalten-Offset. Dies ist nützlich, wenn nachfolgende Funktionen wie cubrid_fetch_field() ohne explizite Offset-Angabe aufgerufen werden und der Cursor automatisch vorwärts springt.

Der Feld-Offset ist nullbasiert, d. h., das erste Feld hat den Offset 0, das zweite 1 und so weiter. Der maximale gültige Wert ist Anzahl der Spalten − 1, abrufbar über cubrid_num_fields().

Typisch wird cubrid_field_seek() eingesetzt, wenn man in einer Schleife gezielt zu einem bestimmten Feld springen möchte, ohne alle vorherigen Felder einzeln abzurufen. Damit lässt sich Code schreiben, der flexibel auf beliebige Spalten zugreift.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das CUBRID-Ergebnis-Resource-Handle, das von cubrid_execute() oder cubrid_query() zurückgegeben wurde.
$field_offset int 0 Der nullbasierte Feld-Offset, auf den der Cursor gesetzt werden soll. Standardwert ist 0 (erstes Feld). Muss im Bereich 0 bis cubrid_num_fields($result) − 1 liegen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Cursor erfolgreich verschoben wurde. Gibt false zurück, wenn ein Fehler aufgetreten ist, zum Beispiel weil der angegebene Offset außerhalb des gültigen Bereichs liegt oder das Ergebnis-Handle ungültig ist.

Beispiele

Feldzeiger auf das dritte Feld setzen und Metadaten abrufen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$result = cubrid_query('SELECT id, name, email, age FROM users', $conn);

// Zeiger auf das dritte Feld (Offset 2 = 'email') setzen
if (cubrid_field_seek($result, 2)) {
    $fieldInfo = cubrid_fetch_field($result);
    echo 'Feldname: ' . $fieldInfo->name . PHP_EOL;
    echo 'Feldtyp: ' . $fieldInfo->type . PHP_EOL;
} else {
    echo 'Fehler beim Setzen des Feldcursors.';
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
Feldname: email Feldtyp: varchar

Alle Felder ab einem bestimmten Offset iterieren

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$result = cubrid_query('SELECT id, name, email, age, city FROM users', $conn);

$startOffset = 1; // Beginne bei 'name'
$numFields = cubrid_num_fields($result);

cubrid_field_seek($result, $startOffset);

for ($i = $startOffset; $i < $numFields; $i++) {
    $field = cubrid_fetch_field($result);
    echo 'Feld ' . $i . ': ' . $field->name . ' (' . $field->type . ')' . PHP_EOL;
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
Feld 1: name (varchar) Feld 2: email (varchar) Feld 3: age (integer) Feld 4: city (varchar)

// Wichtig · Fallstricke

Offset-Bereich beachten: Ein Offset außerhalb des gültigen Bereichs (kleiner 0 oder größer gleich der Feldanzahl) führt dazu, dass die Funktion false zurückgibt. Prüfen Sie den Rückgabewert, bevor Sie weitere Feldoperationen ausführen.

Cursor-Verhalten: Nach dem Aufruf von cubrid_fetch_field() wird der interne Cursor automatisch um eine Position weitergerückt. cubrid_field_seek() ermöglicht es, diesen Cursor manuell zurückzusetzen oder an eine beliebige Position zu springen, ohne vorherige Felder einzeln durchlaufen zu müssen.