Signatur
Beschreibung
ocifetch() ist ein veralteter Alias der Funktion oci_fetch() und sollte in neuem Code nicht mehr verwendet werden. Die Funktion ruft die nächste Zeile eines Oracle-Abfrageergebnisses ab und speichert sie in internen OCI8-Puffern, von wo aus die Spaltenwerte anschließend mit oci_result() gelesen werden können.
Der typische Einsatz dieser Funktion ist das zeilenweise Durchlaufen eines Abfrageergebnisses in einer Schleife. Im Unterschied zu oci_fetch_array() oder oci_fetch_assoc() gibt ocifetch() die Zeilendaten nicht direkt als Array zurück, sondern füllt lediglich den internen Puffer. Die eigentlichen Spaltenwerte müssen dann separat mit oci_result() abgerufen werden.
Da ocifetch() lediglich ein Alias ist, gelten sämtliche Verhaltensweisen, Einschränkungen und Parameter von oci_fetch(). In modernem PHP-Code sollte stets oci_fetch() oder noch besser oci_fetch_array() bzw. oci_fetch_assoc() verwendet werden, die bequemere Rückgabewerte liefern.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI8-Statement-Handle, das durch oci_parse() erzeugt und mit oci_execute() ausgeführt wurde. |
Rückgabewert
true zurück, wenn die nächste Zeile erfolgreich in den internen Puffer geladen wurde. Gibt false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.Beispiele
Zeilenweises Abrufen mit ocifetch und oci_result
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$stmt = oci_parse($conn, 'SELECT mitarbeiter_id, name FROM mitarbeiter WHERE rownum <= 5');
oci_execute($stmt);
while (ocifetch($stmt)) {
$id = oci_result($stmt, 'MITARBEITER_ID');
$name = oci_result($stmt, 'NAME');
echo "ID: $id, Name: $name\n";
}
oci_free_statement($stmt);
oci_close($conn);
?>
Moderner Ersatz mit oci_fetch_assoc (empfohlen)
<?php
// Statt ocifetch() sollte oci_fetch_assoc() verwendet werden:
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
$stmt = oci_parse($conn, 'SELECT mitarbeiter_id, name FROM mitarbeiter WHERE rownum <= 5');
oci_execute($stmt);
while ($row = oci_fetch_assoc($stmt)) {
echo "ID: {$row['MITARBEITER_ID']}, Name: {$row['NAME']}\n";
}
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Veraltet: ocifetch() ist ein Alias der alten OCI8-API (vor PHP 5.0) und sollte in neuem Code nicht mehr verwendet werden. Verwende stattdessen oci_fetch() und – noch besser – oci_fetch_array(), oci_fetch_assoc() oder oci_fetch_object(), die komfortablere Rückgabewerte bieten.
Die Funktion ist abhängig von der OCI8-Erweiterung (ext/oci8), die separat installiert und konfiguriert sein muss. Auf Systemen ohne Oracle-Client oder ohne die oci8-Erweiterung steht diese Funktion nicht zur Verfügung.