Signatur
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
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);
?>
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);
?>
// 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).