Signatur
Beschreibung
ocifetchinto ist die veraltete OCI8-Funktion zum Abrufen einer einzelnen Zeile aus einem Oracle-Abfrage-Ergebnis in eine Variable. Sie ist funktional äquivalent zu den modernen Varianten oci_fetch_array, oci_fetch_assoc und oci_fetch_row, verwendet jedoch eine andere Aufrufkonvention: Das Ziel-Array wird als Referenz übergeben, anstatt das Ergebnis direkt zurückzuliefern.
Der Parameter $mode steuert, ob das Ergebnis-Array assoziative Schlüssel (OCI_ASSOC), numerische Indizes (OCI_NUM) oder beides (OCI_BOTH) enthält. Zusätzlich können OCI_RETURN_NULLS und OCI_RETURN_LOBS kombiniert werden, um NULL-Felder explizit einzuschließen bzw. LOB-Inhalte direkt als String zurückzugeben.
Diese Funktion ist seit PHP 5.4 als veraltet markiert und wurde in neueren PHP-Versionen als Alias beibehalten. Für neuen Code sollte ausschließlich oci_fetch_array oder eine der spezialisierten Varianten verwendet werden, da diese besser dokumentiert sind und konsistentere Rückgabewerte liefern.
Wichtig: Die Funktion gibt die Anzahl der abgerufenen Spalten zurück (also eine positive Ganzzahl), wenn eine Zeile erfolgreich abgerufen wurde, oder false, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $statement Pflicht | resource | Ein gültiges OCI8-Statement-Resource, das zuvor mit oci_parse und oci_execute vorbereitet und ausgeführt wurde. |
|
| $result Pflicht | array | Eine Variable, die per Referenz übergeben wird und nach dem Aufruf die Daten der abgerufenen Zeile enthält. Die Struktur hängt vom gewählten $mode ab. |
|
| $mode | int | OCI_ASSOC | OCI_RETURN_NULLS | Kombinierbare Konstanten zur Steuerung des Rückgabeformats: OCI_ASSOC, OCI_NUM, OCI_BOTH, OCI_RETURN_NULLS, OCI_RETURN_LOBS. |
Rückgabewert
false zurück, wenn keine weiteren Zeilen vorhanden sind oder ein Fehler aufgetreten ist.Beispiele
Einfache Abfrage mit ocifetchinto (Legacy-Code)
<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error();
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$sql = 'SELECT mitarbeiter_id, nachname, vorname FROM mitarbeiter WHERE ROWNUM <= 3';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
$row = [];
while (ocifetchinto($stmt, $row, OCI_ASSOC | OCI_RETURN_NULLS)) {
echo $row['MITARBEITER_ID'] . ' – ' . $row['NACHNAME'] . ', ' . $row['VORNAME'] . PHP_EOL;
}
oci_free_statement($stmt);
oci_close($conn);
?>
Moderne Alternative mit oci_fetch_assoc (empfohlen)
<?php
// Empfohlene Alternative zu ocifetchinto:
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
$stmt = oci_parse($conn, 'SELECT mitarbeiter_id, nachname FROM mitarbeiter WHERE ROWNUM <= 3');
oci_execute($stmt);
while ($row = oci_fetch_assoc($stmt)) {
echo $row['MITARBEITER_ID'] . ' – ' . $row['NACHNAME'] . PHP_EOL;
}
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Deprecation: ocifetchinto ist seit PHP 5.4 als veraltet eingestuft. In neuen Projekten sollte ausschließlich oci_fetch_array, oci_fetch_assoc, oci_fetch_row oder oci_fetch_object verwendet werden. Die Funktion könnte in zukünftigen PHP-Versionen vollständig entfernt werden.
Spaltenname-Groß-/Kleinschreibung: Oracle liefert Spaltennamen standardmäßig in Großbuchstaben zurück. Beim Zugriff auf assoziative Arrays müssen daher Großbuchstaben verwendet werden (z. B. $row['NACHNAME']).
LOB-Felder: Ohne OCI_RETURN_LOBS werden LOB-Spalten als LOB-Deskriptor-Objekt zurückgegeben. Mit der Konstante wird der Inhalt direkt als String geliefert, was bei großen Datenmengen zu erhöhtem Speicherverbrauch führen kann.