Signatur
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
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);
?>
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);
?>
// 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.