Start · Sprachen · PHP · Referenz · cubrid_data_seek

cubrid_data_seek

Funktion

Bewegt den internen Zeilenzeiger eines CUBRID-Abfrageergebnisses auf eine bestimmte Zeile.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_data_seek(resource $result, int $row_number): bool

Beschreibung

cubrid_data_seek() setzt den internen Zeilenzeiger eines CUBRID-Ergebnisressource auf die angegebene Zeilennummer. Auf diese Weise kann man gezielt auf eine bestimmte Zeile eines Abfrageergebnisses zugreifen, ohne alle vorherigen Zeilen sequenziell einlesen zu müssen.

Die Funktion ist besonders nützlich, wenn man in einem großen Ergebnissatz direkt zu einer bestimmten Position springen möchte, z. B. zur Implementierung von Paginierung oder zum erneuten Lesen einer bereits besuchten Zeile. Nach dem Aufruf wird die nächste cubrid_fetch_*()-Funktion die Daten ab der neu gesetzten Position liefern.

Die Zeilennummer beginnt bei 0 (erste Zeile) und endet bei der Gesamtanzahl der Zeilen minus 1. Ungültige Werte außerhalb dieses Bereichs führen dazu, dass die Funktion false zurückgibt.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Die CUBRID-Ergebnisressource, die von cubrid_query(), cubrid_execute() oder einer vergleichbaren Funktion zurückgegeben wurde.
$row_number Pflicht int Die Zielnummer der Zeile, auf die der interne Zeiger gesetzt werden soll. Der Wert muss im Bereich von 0 (erste Zeile) bis cubrid_num_rows($result) - 1 (letzte Zeile) liegen.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Zeilenzeiger erfolgreich gesetzt wurde. Gibt false zurück, wenn die angegebene Zeilennummer außerhalb des gültigen Bereichs liegt oder ein anderer Fehler auftritt.

Beispiele

Direkten Zugriff auf eine bestimmte Ergebniszeile

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

$total = cubrid_num_rows($result);
echo "Gesamtanzahl Zeilen: $total\n";

// Direkt zur 3. Zeile (Index 2) springen
if (cubrid_data_seek($result, 2)) {
    $row = cubrid_fetch_assoc($result);
    echo "Zeile 3 – ID: {$row['id']}, Name: {$row['name']}\n";
} else {
    echo "Zeile nicht gefunden.\n";
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
Gesamtanzahl Zeilen: 10 Zeile 3 – ID: 3, Name: Max Mustermann

Ergebnissatz rückwärts durchlaufen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
$result = cubrid_query('SELECT id, name FROM products ORDER BY id', $conn);

$total = cubrid_num_rows($result);

// Ergebnissatz von der letzten zur ersten Zeile ausgeben
for ($i = $total - 1; $i >= 0; $i--) {
    if (cubrid_data_seek($result, $i)) {
        $row = cubrid_fetch_row($result);
        echo "Zeile $i – ID: {$row[0]}, Name: {$row[1]}\n";
    }
}

cubrid_close_request($result);
cubrid_disconnect($conn);
?>
Zeile 4 – ID: 5, Name: Produkt E Zeile 3 – ID: 4, Name: Produkt D Zeile 2 – ID: 3, Name: Produkt C Zeile 1 – ID: 2, Name: Produkt B Zeile 0 – ID: 1, Name: Produkt A

// Wichtig · Fallstricke

Gültigkeitsbereich: Die Funktion funktioniert nur mit Ergebnisressourcen, die von SELECT-Abfragen stammen. Für INSERT-, UPDATE- oder DELETE-Abfragen ist sie nicht anwendbar.

Zählung ab 0: Achtung – der erste Datensatz hat den Index 0, nicht 1. Ein häufiger Fehler ist es, direkt mit menschlich lesbaren Zeilennummern (ab 1) zu arbeiten, was zu Off-by-One-Fehlern führen kann.

Die Funktion ist nur bei gepufferten Ergebnismengen verfügbar. Bei ungepufferten Abfrageergebnissen ist das Setzen des Zeigers nicht möglich.