Start · Sprachen · PHP · Referenz · ocifetch

ocifetch

Funktion

Veralteter Alias von <code>oci_fetch()</code> — lädt die nächste Zeile eines Oracle-Abfrageergebnisses in interne Puffer.

seit PHP 4.0.0 Kategorie: db

Signatur

ocifetch(resource $statement): bool

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

Typ
bool
Beschreibung
Gibt 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);
?>
ID: 1, Name: Max Mustermann ID: 2, Name: Erika Musterfrau ...

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);
?>
ID: 1, Name: Max Mustermann ID: 2, Name: Erika Musterfrau ...

// 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.