Start · Sprachen · PHP · Referenz · cubrid_fetch_assoc

cubrid_fetch_assoc

Funktion

Liest die nächste Zeile aus einem CUBRID-Abfrageergebnis und gibt sie als assoziatives Array zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

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

Beschreibung

cubrid_fetch_assoc() holt die nächste Zeile aus dem übergebenen CUBRID-Ergebnisressourcen-Handle und liefert die Spaltenwerte als assoziatives Array, bei dem die Schlüssel die Spaltennamen der Abfrage sind. Bei jedem Aufruf wird der interne Zeilenzeiger automatisch um eine Position weitergerückt.

Der optionale Parameter $type erlaubt es, das Verhalten bei LOB-Spalten (Large Objects) zu steuern. Mit CUBRID_LOB können BLOB- und CLOB-Typen direkt abgerufen werden. Standardmäßig wird CUBRID_BOTH übergeben, was für die meisten gewöhnlichen Abfragen ausreichend ist.

Die Funktion eignet sich hervorragend für den Einsatz in einer while-Schleife, um alle Zeilen eines Abfrageergebnisses nacheinander zu verarbeiten, ohne auf numerische Spaltenindizes angewiesen zu sein – der Code bleibt dadurch deutlich lesbarer und wartbarer.

Wenn keine weiteren Zeilen vorhanden sind oder ein Fehler auftritt, gibt die Funktion false zurück, wodurch die Schleife sauber beendet werden kann.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das CUBRID-Ergebnisressourcen-Handle, das von Funktionen wie cubrid_execute() oder cubrid_query() zurückgegeben wurde.
$type int CUBRID_BOTH Optionaler Abrufmodus. Akzeptiert CUBRID_BOTH (Standard) für normalen Abruf oder CUBRID_LOB, um LOB-Spalten (BLOB/CLOB) direkt als Ressource abzurufen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array zurück, dessen Schlüssel den Spaltennamen des Abfrageergebnisses entsprechen und dessen Werte die Zeilendaten der aktuellen Position enthalten. Sind keine weiteren Zeilen vorhanden oder tritt ein Fehler auf, wird false zurückgegeben.

Beispiele

Alle Zeilen einer Tabelle mit cubrid_fetch_assoc auslesen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'public', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

$result = cubrid_execute($conn, 'SELECT id, name, email FROM users');

if ($result) {
    while ($row = cubrid_fetch_assoc($result)) {
        echo 'ID: ' . $row['id'] . ', '
           . 'Name: ' . $row['name'] . ', '
           . 'E-Mail: ' . $row['email'] . PHP_EOL;
    }
    cubrid_close_request($result);
} else {
    echo 'Abfragefehler: ' . cubrid_error($conn);
}

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

LOB-Spalten mit CUBRID_LOB abrufen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'public', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

$result = cubrid_execute($conn, 'SELECT id, bild FROM produkte WHERE id = 42');

if ($result) {
    $row = cubrid_fetch_assoc($result, CUBRID_LOB);
    if ($row !== false) {
        echo 'Produkt-ID: ' . $row['id'] . PHP_EOL;
        // $row['bild'] ist eine LOB-Ressource, die weiterverarbeitet werden kann
        $bildDaten = cubrid_lob2_read($row['bild'], 1024);
        echo 'Bildgröße (erste 1 KB): ' . strlen($bildDaten) . ' Bytes' . PHP_EOL;
    }
    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>
Produkt-ID: 42 Bildgröße (erste 1 KB): 1024 Bytes

// Wichtig · Fallstricke

Sicherheitshinweis: Benutzereingaben, die in SQL-Abfragen einfließen, sollten niemals direkt eingebettet werden. Verwende stattdessen vorbereitete Anweisungen mit cubrid_prepare() und cubrid_bind(), um SQL-Injection zu verhindern.

Bei doppelten Spaltennamen im Ergebnis (z. B. bei JOINs über mehrere Tabellen mit gleichen Spaltennamen) wird nur der Wert der zuletzt gelesenen Spalte im Array gespeichert. Verwende in solchen Fällen Spalten-Aliase in der SQL-Abfrage (SELECT a.id AS a_id, b.id AS b_id ...).

Das Ergebnishandle sollte nach der Verarbeitung immer mit cubrid_close_request() freigegeben werden, um Ressourcen nicht unnötig zu belegen.