Start · Sprachen · PHP · Referenz · ocifetchinto

ocifetchinto

Funktion

Veraltete Funktion zum Abrufen einer Ergebniszeile aus einer OCI8-Abfrage in ein Array – ersetzt durch <code>oci_fetch_array</code>, <code>oci_fetch_assoc</code>, <code>oci_fetch_row</code> oder <code>oci_fetch_object</code>.

seit PHP 4.0.0 Kategorie: db

Signatur

ocifetchinto(resource $statement, array &$result, int $mode = OCI_ASSOC | OCI_RETURN_NULLS): int|false

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

Typ
int|false
Beschreibung
Gibt die Anzahl der abgerufenen Spalten als positive Ganzzahl zurück, wenn eine Zeile erfolgreich geholt wurde. Gibt 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);
?>
1 – Müller, Hans 2 – Schmidt, Anna 3 – Weber, Klaus

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);
?>
1 – Müller 2 – Schmidt 3 – Weber

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