Start · Sprachen · PHP · Referenz · odbc_errormsg

odbc_errormsg

Funktion

Gibt die letzte Fehlermeldung der ODBC-Verbindung zurück, die bei einem fehlgeschlagenen ODBC-Aufruf aufgetreten ist.

seit PHP 4.0.0 Kategorie: db

Signatur

odbc_errormsg(resource|null $odbc = null): string

Beschreibung

odbc_errormsg() liefert den Klartexttext der letzten Fehlermeldung, die bei einer ODBC-Operation aufgetreten ist. Sie ergänzt odbc_error(), welche nur den kurzen SQLSTATE-Code zurückgibt, während odbc_errormsg() eine ausführlichere Beschreibung des Problems liefert.

Wird kein Verbindungs-Handle übergeben (oder null), bezieht sich die Funktion auf den zuletzt aufgetretenen Fehler über alle aktiven ODBC-Verbindungen hinweg. Wird ein gültiges Verbindungs-Handle übergeben, wird der Fehler speziell für diese Verbindung abgefragt.

Die Funktion ist besonders nützlich beim Debuggen von ODBC-Abfragen und beim Aufbau von aussagekräftigen Fehlerbehandlungsroutinen. Sie sollte direkt nach einem fehlgeschlagenen odbc_exec()-, odbc_connect()- oder ähnlichen Aufruf verwendet werden, um den Fehlerkontext zu erhalten.

Zu beachten ist, dass die Fehlermeldung nach jedem erfolgreichen ODBC-Aufruf zurückgesetzt werden kann. Daher sollte sie unmittelbar nach dem fehlgeschlagenen Aufruf abgerufen werden.

Parameter

Name Typ Default Beschreibung
$odbc resource|null null Eine ODBC-Verbindungsressource, die mit odbc_connect() oder odbc_pconnect() erzeugt wurde. Wird null übergeben oder der Parameter weggelassen, wird der globale Fehlerstatus aller ODBC-Verbindungen abgefragt.

Rückgabewert

Typ
string
Beschreibung
Gibt einen String mit der letzten ODBC-Fehlermeldung zurück. Ist kein Fehler aufgetreten oder ist die Fehlermeldung nicht verfügbar, wird ein leerer String zurückgegeben.

Beispiele

Fehlerbehandlung nach fehlgeschlagener ODBC-Abfrage

<?php
$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');

if (!$conn) {
    echo 'Verbindungsfehler: ' . odbc_errormsg();
    exit;
}

$result = odbc_exec($conn, 'SELECT * FROM nicht_vorhandene_tabelle');

if (!$result) {
    $fehlercode    = odbc_error($conn);
    $fehlermeldung = odbc_errormsg($conn);
    echo "ODBC-Fehler [{$fehlercode}]: {$fehlermeldung}\n";
}

odbc_close($conn);
ODBC-Fehler [S0002]: [ODBC-Treiber] Tabelle oder View nicht gefunden: nicht_vorhandene_tabelle

Fehlerprotokollierung in einer Hilfsfunktion

<?php
function odbc_abfrage_ausfuehren(resource $conn, string $sql): mixed
{
    $result = odbc_exec($conn, $sql);

    if ($result === false) {
        $msg = sprintf(
            'ODBC-Fehler [%s]: %s | SQL: %s',
            odbc_error($conn),
            odbc_errormsg($conn),
            $sql
        );
        error_log($msg);
        return false;
    }

    return $result;
}

$conn = odbc_connect('MeineDSN', 'benutzer', 'passwort');
$result = odbc_abfrage_ausfuehren($conn, 'SELECT id, name FROM kunden WHERE aktiv = 1');

if ($result !== false) {
    while ($zeile = odbc_fetch_array($result)) {
        echo $zeile['id'] . ': ' . $zeile['name'] . "\n";
    }
}

odbc_close($conn);
1: Max Mustermann 2: Erika Musterfrau

// Wichtig · Fallstricke

Fehlerstatus wird überschrieben: Nach einem erfolgreichen ODBC-Aufruf kann der interne Fehlerstatus zurückgesetzt werden. Die Fehlermeldung sollte daher unmittelbar nach dem fehlgeschlagenen Aufruf abgerufen werden, bevor weitere ODBC-Operationen ausgeführt werden.

Sicherheitshinweis: Fehlermeldungen können interne Datenbankstrukturinformationen (Tabellennamen, Spalten, Treibernamen) enthalten. Diese sollten niemals direkt an den Endbenutzer ausgegeben werden. Stattdessen die Meldungen ins Serverlog schreiben und dem Nutzer nur eine generische Fehlermeldung anzeigen.

Erweiterungsstatus: Die ODBC-Erweiterung ist in PHP 8.x weiterhin verfügbar, gilt aber als Schnittstelle zu einer älteren Technologie. Für neue Projekte sollten wo möglich datenbankspezifische Erweiterungen (z. B. PDO) oder modernere Abstraktionsschichten bevorzugt werden.