Start · Sprachen · PHP · Referenz · cubrid_num_fields

cubrid_num_fields

Funktion

Gibt die Anzahl der Spalten (Felder) in einem CUBRID-Abfrageergebnis zurück.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_num_fields(resource $result): int

Beschreibung

cubrid_num_fields() ermittelt, wie viele Spalten ein CUBRID-Abfrageergebnis enthält. Die Funktion ist besonders nützlich, wenn das genaue Schema einer Ergebnismenge nicht im Voraus bekannt ist – etwa bei dynamisch aufgebauten SELECT-Abfragen oder beim allgemeinen Verarbeiten von Resultsets.

Der Rückgabewert entspricht der Anzahl der projizierten Felder in der jeweiligen Abfrage. Bei einer Abfrage SELECT a, b, c FROM t liefert die Funktion den Wert 3. Zusammen mit cubrid_fetch_array() oder cubrid_fetch_row() lässt sich so ein vollständig tabellarisches Ausgabe-Schema aufbauen.

Die Funktion funktioniert ausschließlich mit einem gültigen Ergebnis-Handle, das von cubrid_execute() oder cubrid_query() zurückgegeben wurde. Bei nicht-tabellarischen Abfragen (z. B. INSERT, UPDATE) gibt sie 0 zurück.

Parameter

Name Typ Default Beschreibung
$result Pflicht resource Ein gültiges CUBRID-Ergebnis-Handle, das von Funktionen wie cubrid_execute() oder cubrid_query() zurückgegeben wurde.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Spalten im Ergebnis als nicht-negative Ganzzahl zurück. Bei Erfolg die Spaltenanzahl (mindestens 0). Gibt -1 zurück, wenn ein Fehler aufgetreten ist, z. B. bei einem ungültigen Ergebnis-Handle.

Beispiele

Spaltenanzahl einer SELECT-Abfrage ermitteln

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

$result = cubrid_query('SELECT id, name, email FROM members', $conn);

if ($result) {
    $numFields = cubrid_num_fields($result);
    echo 'Anzahl der Spalten: ' . $numFields . PHP_EOL; // 3
    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>
Anzahl der Spalten: 3

Dynamische Tabellenausgabe mit cubrid_num_fields

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

$result = cubrid_query('SELECT * FROM orders', $conn);

if ($result) {
    $numFields = cubrid_num_fields($result);

    // Spaltenüberschriften ausgeben
    echo '<table border="1"><tr>';
    for ($i = 0; $i < $numFields; $i++) {
        echo '<th>' . htmlspecialchars(cubrid_field_name($result, $i)) . '</th>';
    }
    echo '</tr>';

    // Zeilen ausgeben
    while ($row = cubrid_fetch_row($result)) {
        echo '<tr>';
        foreach ($row as $cell) {
            echo '<td>' . htmlspecialchars((string)$cell) . '</td>';
        }
        echo '</tr>';
    }
    echo '</table>';

    cubrid_close_request($result);
}

cubrid_disconnect($conn);
?>

// Wichtig · Fallstricke

Hinweis: Bei Abfragen, die keine Ergebnismenge liefern (z. B. INSERT, UPDATE, DELETE), gibt cubrid_num_fields() den Wert 0 zurück, nicht false. Prüfen Sie deshalb immer auch, ob das Ergebnis-Handle überhaupt gültig ist, bevor Sie diese Funktion aufrufen.

Die Funktion ist das CUBRID-Äquivalent zu mysqli_num_fields() oder PDOStatement::columnCount(). Sie steht nur zur Verfügung, wenn die CUBRID-Erweiterung (php_cubrid) installiert und aktiviert ist.