Signatur
Beschreibung
ocierror() ist ein veralteter Alias der Funktion oci_error() und liefert Informationen über den zuletzt aufgetretenen Fehler bei einer Oracle-Datenbankoperation über die OCI8-Erweiterung.
Als optionalen Parameter akzeptiert die Funktion eine Verbindungs-Ressource, eine Statement-Ressource oder null. Anhand des übergebenen Parameters wird der Fehler im passenden Kontext (Verbindungsebene, Statement-Ebene oder global) abgefragt. Das Rückgabe-Array enthält unter anderem den Oracle-Fehlercode (code), die Fehlermeldung (message), den SQL-Offset (offset) sowie das betroffene SQL-Statement (sqltext).
Achtung: Diese Funktion ist seit PHP 8.0.0 als veraltet markiert (deprecated) und sollte nicht mehr in neuem Code verwendet werden. Stattdessen sollte ausschließlich oci_error() eingesetzt werden, um Kompatibilität mit zukünftigen PHP-Versionen sicherzustellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $connection_or_statement | resource|null | null | Eine OCI8-Verbindungs-Ressource (von oci_connect()), eine Statement-Ressource (von oci_parse()) oder null für globale Fehler, die keiner spezifischen Ressource zuzuordnen sind. |
Rückgabewert
code (Oracle-Fehlercode), message (Fehlermeldung), offset (Byte-Position im SQL-String) und sqltext (das betroffene SQL-Statement) zurück. Falls kein Fehler aufgetreten ist, wird false zurückgegeben.Beispiele
Fehlerbehandlung bei einer fehlgeschlagenen Oracle-Abfrage
<?php
// Verbindung herstellen
$conn = oci_connect('benutzername', 'passwort', 'localhost/XE');
if (!$conn) {
// ocierror() ohne Parameter für Verbindungsfehler
$e = ocierror();
echo 'Verbindungsfehler: ' . $e['message'];
exit;
}
// Absichtlich fehlerhaftes SQL
$stmt = oci_parse($conn, 'SELECT * FROM nicht_vorhandene_tabelle');
if (!oci_execute($stmt)) {
// ocierror() mit Statement-Ressource für Statement-Fehler
$e = ocierror($stmt);
echo 'Fehlercode: ' . $e['code'] . PHP_EOL;
echo 'Fehlermeldung: ' . $e['message'] . PHP_EOL;
echo 'SQL: ' . $e['sqltext'] . PHP_EOL;
}
oci_free_statement($stmt);
oci_close($conn);
?>
Empfohlene Alternative mit oci_error()
<?php
// Moderne, empfohlene Variante – kein veralteter Alias
$conn = oci_connect('benutzername', 'passwort', 'localhost/XE');
if (!$conn) {
$e = oci_error(); // statt ocierror()
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
$stmt = oci_parse($conn, 'SELECT sysdate FROM dual');
if (!oci_execute($stmt)) {
$e = oci_error($stmt); // statt ocierror($stmt)
trigger_error(htmlspecialchars($e['message']), E_USER_ERROR);
}
oci_free_statement($stmt);
oci_close($conn);
?>
// Wichtig · Fallstricke
Deprecation: ocierror() ist ein veralteter Alias und wurde in PHP 8.0.0 als deprecated markiert. In zukünftigen PHP-Versionen könnte die Funktion entfernt werden. Verwende stattdessen immer oci_error().
Sicherheitshinweis: Die Fehlermeldungen von Oracle können sensible Informationen über Datenbankstruktur und SQL-Abfragen enthalten. Gib den Inhalt von $e['message'] und $e['sqltext'] niemals ungefiltert an den Endanwender aus — nutze htmlspecialchars() und logge detaillierte Fehler nur serverseitig.