Start · Sprachen · PHP · Referenz · ociparse

ociparse

Funktion

Veralteter Alias für <code>oci_parse()</code> — bereitet ein SQL-Statement oder eine PL/SQL-Anweisung für die Ausführung gegen eine Oracle-Datenbankverbindung vor.

seit PHP 4.0.0 Kategorie: db

Signatur

ociparse(resource $connection, string $sql): resource|false

Beschreibung

ociparse() ist ein veralteter Alias der Funktion oci_parse() und verhält sich identisch zu dieser. Sie parst eine SQL- oder PL/SQL-Anweisung und gibt ein Statement-Handle zurück, das anschließend mit oci_bind_by_name(), oci_execute() und ähnlichen Funktionen verwendet werden kann.

Die Funktion analysiert die übergebene Zeichenkette syntaktisch und erstellt ein internes Oracle-Statement-Objekt. Eine eigentliche Verbindung zur Datenbank oder eine vollständige Syntaxprüfung findet erst beim Aufruf von oci_execute() statt.

Wichtig: Diese Funktion ist seit PHP 8.0.0 als veraltet (deprecated) markiert und sollte in neuem Code nicht mehr verwendet werden. Stattdessen sollte die aktuelle Funktion oci_parse() eingesetzt werden, da ociparse() in zukünftigen PHP-Versionen entfernt werden kann.

Die Funktion eignet sich in Kombination mit Bind-Variablen (oci_bind_by_name()), um SQL-Injection zu verhindern und vorbereitete Statements mehrfach effizient auszuführen.

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource Eine gültige Oracle-Verbindungsressource, die z. B. mit oci_connect(), oci_pconnect() oder oci_new_connect() erstellt wurde.
$sql Pflicht string Die SQL- oder PL/SQL-Anweisung als Zeichenkette. Platzhalter für Bind-Variablen werden mit einem Doppelpunkt eingeleitet, z. B. :name.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine Statement-Ressource zurück, die für weitere OCI-Funktionen verwendet werden kann. Im Fehlerfall wird false zurückgegeben.

Beispiele

Einfache SELECT-Abfrage mit ociparse (Legacy-Code)

<?php
// Verbindung zur Oracle-Datenbank herstellen
$conn = oci_connect('benutzername', 'passwort', 'localhost/XE');

if (!$conn) {
    $err = oci_error();
    trigger_error(htmlspecialchars($err['message']), E_USER_ERROR);
}

// Veralteter Alias – besser oci_parse() verwenden!
$stmt = ociparse($conn, 'SELECT vorname, nachname FROM benutzer WHERE id = :id');

oci_bind_by_name($stmt, ':id', $id);
$id = 42;

oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    echo $row['VORNAME'] . ' ' . $row['NACHNAME'] . "\n";
}

oci_free_statement($stmt);
oci_close($conn);
?>
Max Mustermann

Migrationsbeispiel: ociparse zu oci_parse

<?php
// ALT (veraltet, nicht mehr verwenden):
// $stmt = ociparse($conn, 'SELECT * FROM produkte');

// NEU (empfohlen ab PHP 8.0):
$conn = oci_connect('benutzername', 'passwort', 'localhost/XE');

if (!$conn) {
    $err = oci_error();
    trigger_error(htmlspecialchars($err['message']), E_USER_ERROR);
}

$stmt = oci_parse($conn, 'SELECT id, bezeichnung FROM produkte ORDER BY id');
oci_execute($stmt);

while ($row = oci_fetch_assoc($stmt)) {
    echo $row['ID'] . ': ' . $row['BEZEICHNUNG'] . "\n";
}

oci_free_statement($stmt);
oci_close($conn);
?>
1: Apfel 2: Banane 3: Kirsche

// Wichtig · Fallstricke

Deprecation: ociparse() ist seit PHP 8.0.0 als veraltet markiert. Alle Aufrufe sollten auf oci_parse() migriert werden. In PHP 8.4 oder einer späteren Version kann die Funktion vollständig entfernt werden.

Sicherheit / SQL-Injection: Niemals Benutzereingaben direkt in den SQL-String einbauen. Stattdessen immer Bind-Variablen mit oci_bind_by_name() verwenden, da Oracle Prepared Statements nativ unterstützt und dies sowohl sicher als auch performant ist.

Fehlerbehandlung: Der Rückgabewert sollte stets auf false geprüft werden. Detaillierte Fehlerinformationen liefert oci_error($conn).