Signatur
Beschreibung
ocinumcols() ist ein veralteter Alias für die Funktion oci_num_fields(). Sie gibt die Anzahl der Spalten (Felder) zurück, die ein vorbereitetes und ausgeführtes OCI8-Statement-Handle enthält. Die Funktion ist nützlich, um dynamisch die Struktur einer Abfrageantwort zu ermitteln, ohne die Spaltennamen im Voraus kennen zu müssen.
Typischerweise wird sie eingesetzt, wenn Abfrageergebnisse generisch verarbeitet werden sollen – etwa beim Aufbau allgemeiner Datenbankexport-Routinen oder zur dynamischen Tabellenausgabe. In Verbindung mit oci_field_name() lässt sich die vollständige Spaltenstruktur eines Ergebnisses iterativ auslesen.
Achtung: Diese Funktion ist ein veralteter Alias und sollte in neuem Code nicht mehr verwendet werden. Stattdessen sollte direkt oci_num_fields() genutzt werden, da Aliasse in zukünftigen PHP-Versionen entfernt werden könnten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI8-Statement-Handle, das zuvor mit oci_parse() erstellt und mit oci_execute() ausgeführt wurde. |
Rückgabewert
int zurück. Im Fehlerfall (z. B. ungültiges Statement-Handle) wird false zurückgegeben.Beispiele
Anzahl der Spalten einer Oracle-Abfrage ermitteln
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
$sql = 'SELECT mitarbeiter_id, vorname, nachname, abteilung FROM mitarbeiter';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
$anzahlSpalten = ocinumcols($stmt);
echo "Anzahl der Spalten: " . $anzahlSpalten . "\n";
oci_free_statement($stmt);
oci_close($conn);
?>
Dynamische Spaltenausgabe mit ocinumcols und oci_field_name
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}
$sql = 'SELECT * FROM produkte WHERE ROWNUM <= 5';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
$anzahlSpalten = ocinumcols($stmt);
echo "Spalten (" . $anzahlSpalten . "):\n";
for ($i = 1; $i <= $anzahlSpalten; $i++) {
echo " " . $i . ": " . oci_field_name($stmt, $i) . "\n";
}
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Deprecation: ocinumcols() ist ein veralteter Alias für oci_num_fields(). In neuem Code sollte ausschließlich oci_num_fields() verwendet werden. PHP-Aliasse für OCI8-Funktionen können in zukünftigen Versionen ohne weitere Ankündigung entfernt werden.
Die Funktion setzt voraus, dass das Statement-Handle bereits mit oci_execute() ausgeführt wurde. Wird ein nicht ausgeführtes Handle übergeben, kann das Ergebnis undefiniert oder false sein.