Start · Sprachen · PHP · Referenz · cubrid_fetch

cubrid_fetch

Funktion

Holt die nächste Zeile aus einem CUBRID-Abfrageergebnis als assoziatives Array, numerisches Array oder beides.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_fetch(resource $result, int $type = CUBRID_BOTH): array|false

Beschreibung

cubrid_fetch() liest die nächste Zeile aus dem übergebenen CUBRID-Ergebnis-Handle und gibt sie als Array zurück. Der optionale Parameter $type steuert, ob das Array numerisch indiziert, assoziativ (nach Spaltennamen) oder beides ist. Wird das Ende des Ergebnisses erreicht oder tritt ein Fehler auf, gibt die Funktion false zurück.

Die Funktion ist ähnlich wie cubrid_fetch_array() und eignet sich besonders für den Einsatz in einer while-Schleife, um alle Zeilen eines Ergebnisses sequenziell zu durchlaufen. Sie arbeitet intern mit einem Zeilencursor, der nach jedem Aufruf automatisch zur nächsten Zeile weiterrückt.

Mit den Konstanten CUBRID_NUM, CUBRID_ASSOC und CUBRID_BOTH kann der Rückgabetyp gesteuert werden. CUBRID_BOTH ist der Standardwert und liefert das Array sowohl mit numerischen als auch mit Spaltennamen als Schlüssel.

Nach Abschluss der Datenverarbeitung sollte das Ergebnis-Handle mit cubrid_close_request() freigegeben werden, um Ressourcen zu schonen.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das Ergebnis-Handle, das von einer Funktion wie cubrid_execute() oder cubrid_query() zurückgegeben wurde.
$type int CUBRID_BOTH Gibt an, in welchem Format die Zeile zurückgegeben werden soll. Mögliche Werte: CUBRID_NUM (numerisch), CUBRID_ASSOC (assoziativ), CUBRID_BOTH (beides).

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit dem Inhalt der aktuellen Zeile zurück. Wenn es keine weiteren Zeilen gibt oder ein Fehler auftritt, wird false zurückgegeben.

Beispiele

Alle Zeilen einer Tabelle ausgeben

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

$result = cubrid_execute($conn, 'SELECT id, name, email FROM users');
if ($result) {
    while ($row = cubrid_fetch($result, CUBRID_ASSOC)) {
        echo 'ID: ' . $row['id'] . ', Name: ' . $row['name'] . ', E-Mail: ' . $row['email'] . PHP_EOL;
    }
    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>
ID: 1, Name: Max Mustermann, E-Mail: max@example.com ID: 2, Name: Erika Musterfrau, E-Mail: erika@example.com

Zeilen numerisch indiziert abrufen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

$result = cubrid_execute($conn, 'SELECT id, name FROM products ORDER BY id');
if ($result) {
    while ($row = cubrid_fetch($result, CUBRID_NUM)) {
        // $row[0] = id, $row[1] = name
        echo 'Produkt #' . $row[0] . ': ' . $row[1] . PHP_EOL;
    }
    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>
Produkt #1: Laptop Produkt #2: Tastatur Produkt #3: Maus

// Wichtig · Fallstricke

Sicherheitshinweis: Benutzereingaben niemals direkt in SQL-Abfragen einbetten. Verwende stattdessen vorbereitete Anweisungen (cubrid_prepare() und cubrid_bind()), um SQL-Injection zu verhindern.

Das Ergebnis-Handle bleibt nach dem Ende der Schleife gültig. Es sollte explizit mit cubrid_close_request() geschlossen werden, um Datenbankressourcen freizugeben, insbesondere bei vielen gleichzeitigen Anfragen.

Bei LOB-Spalten (Large Objects) kann das Verhalten abweichen; hier empfehlen sich spezialisierte Funktionen wie cubrid_lob2_read().