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