Start · Sprachen · PHP · Referenz · cubrid_fetch_array

cubrid_fetch_array

Funktion

Liest die nächste Ergebniszeile einer CUBRID-Abfrage und gibt sie als assoziatives Array, numerisches Array oder beides zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

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

Beschreibung

cubrid_fetch_array() ruft eine Zeile aus dem Ergebnis-Ressource-Handle ab, das von cubrid_query() oder cubrid_execute() zurückgegeben wurde. Der zweite Parameter $type steuert, in welcher Form die Zeile zurückgegeben wird: als numerisch indiziertes Array (CUBRID_NUM), als assoziatives Array (CUBRID_ASSOC) oder als beides zugleich (CUBRID_BOTH, Standard).

Bei jedem Aufruf wird der interne Zeiger auf die nächste Zeile weitergesetzt, sodass die Funktion üblicherweise in einer while-Schleife verwendet wird, bis sie false zurückgibt — was das Ende der Ergebnismenge signalisiert.

Die Funktion ist äquivalent zu den spezialisierten Varianten cubrid_fetch_assoc() und cubrid_fetch_row(), bietet jedoch durch den Typ-Parameter mehr Flexibilität in einem einzigen Aufruf. Für objektbasierten Zugriff steht cubrid_fetch_object() zur Verfügung.

  • CUBRID_NUM – Nur numerisch indizierte Schlüssel (0, 1, 2 …)
  • CUBRID_ASSOC – Nur Spaltennamen als Schlüssel
  • CUBRID_BOTH – Sowohl numerische als auch assoziative Schlüssel (Standard)

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Das Ergebnis-Handle, das von cubrid_query(), cubrid_execute() oder ähnlichen CUBRID-Abfragefunktionen zurückgegeben wurde.
$type int CUBRID_BOTH Bestimmt den Rückgabetyp des Arrays. Mögliche Werte sind CUBRID_NUM (numerisch), CUBRID_ASSOC (assoziativ) oder CUBRID_BOTH (beides). Standard ist CUBRID_BOTH.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den Daten der nächsten Ergebniszeile zurück. Die Struktur hängt vom Parameter $type ab. Gibt false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler auftritt.

Beispiele

Alle Zeilen einer CUBRID-Abfrage auslesen

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

$result = cubrid_query('SELECT id, name, email FROM users', $conn);
if (!$result) {
    die('Abfragefehler: ' . cubrid_error($conn));
}

while ($row = cubrid_fetch_array($result, CUBRID_ASSOC)) {
    echo 'ID: ' . $row['id'] . ', Name: ' . $row['name'] . ', E-Mail: ' . $row['email'] . PHP_EOL;
}

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

Zugriff über numerische und assoziative Schlüssel gleichzeitig

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

while ($row = cubrid_fetch_array($result, CUBRID_BOTH)) {
    // Zugriff über numerischen Index
    echo 'Spalte 0 (numerisch): ' . $row[0] . PHP_EOL;
    // Zugriff über Spaltenname
    echo 'Spalte id (assoziativ): ' . $row['id'] . PHP_EOL;
    echo 'Produktname: ' . $row['name'] . PHP_EOL;
    echo '---' . PHP_EOL;
}

cubrid_free_result($result);
cubrid_disconnect($conn);
Spalte 0 (numerisch): 101 Spalte id (assoziativ): 101 Produktname: Laptop --- Spalte 0 (numerisch): 102 Spalte id (assoziativ): 102 Produktname: Maus ---

// Wichtig · Fallstricke

Speicher: Nach der Verarbeitung eines Ergebnisses sollte cubrid_free_result() aufgerufen werden, um den belegten Speicher freizugeben.

CUBRID_BOTH und Duplikate: Bei Verwendung von CUBRID_BOTH enthält das zurückgegebene Array jede Spalte doppelt — einmal mit numerischem und einmal mit assoziativem Schlüssel. Dies verdoppelt den Speicherbedarf des Arrays.

Spaltennamen-Kollisionen: Wenn eine SQL-Abfrage mehrere Spalten mit gleichem Namen (z. B. durch JOIN) zurückliefert, überschreibt der assoziative Schlüssel immer den Wert der letzten Spalte mit diesem Namen. In solchen Fällen ist CUBRID_NUM die sicherere Wahl oder es sollten Aliase in der SQL-Abfrage genutzt werden.