Signatur
Beschreibung
db2_stmt_errormsg() liefert den Klartext der letzten Fehlermeldung, die bei der Ausführung einer vorbereiteten oder direkt ausgeführten SQL-Anweisung aufgetreten ist. Die Funktion gehört zur IBM DB2 Extension (ibm_db2) und ist besonders nützlich für die Fehlerdiagnose nach fehlgeschlagenen Aufrufen von db2_execute(), db2_exec() oder ähnlichen Anweisungsfunktionen.
Wird ein gültiges Statement-Handle ($stmt) übergeben, liefert die Funktion die Fehlermeldung, die spezifisch für dieses Statement-Handle gespeichert wurde. Wird kein Argument übergeben, gibt die Funktion die zuletzt aufgetretene Fehlermeldung für das zuletzt ausgeführte Statement zurück.
In Kombination mit db2_stmt_error(), das den kurzen SQLSTATE-Fehlercode liefert, lässt sich so eine vollständige Fehlerdiagnose durchführen. Für verbindungsbezogene Fehler (außerhalb von Statements) sollten stattdessen db2_conn_errormsg() und db2_conn_error() verwendet werden.
- Gibt einen leeren String zurück, wenn kein Fehler aufgetreten ist.
- Gibt den letzten bekannten Fehlertext zurück, auch wenn kein Statement-Handle angegeben wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $stmt | resource | null | Ein gültiges Statement-Handle, das von db2_prepare() oder db2_exec() zurückgegeben wurde. Wird kein Handle angegeben, bezieht sich die Fehlermeldung auf das zuletzt verwendete Statement. |
Rückgabewert
Beispiele
Fehlerbehandlung nach fehlgeschlagenem db2_execute()
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
// Absichtlich fehlerhafte SQL-Abfrage
$sql = 'SELECT * FROM nicht_vorhandene_tabelle WHERE id = ?';
$stmt = db2_prepare($conn, $sql);
if ($stmt) {
$result = db2_execute($stmt, [1]);
if (!$result) {
$sqlstate = db2_stmt_error($stmt);
$message = db2_stmt_errormsg($stmt);
echo "SQLSTATE: $sqlstate\n";
echo "Fehlermeldung: $message\n";
}
} else {
echo "Statement konnte nicht vorbereitet werden: " . db2_stmt_errormsg() . "\n";
}
db2_close($conn);
} else {
echo "Verbindung fehlgeschlagen.\n";
}
?>
Aufruf ohne Statement-Handle nach db2_exec()
<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheim');
if ($conn) {
// Direktausführung einer fehlerhaften SQL-Anweisung
$result = db2_exec($conn, 'DELETE FORM bestellungen WHERE id = 99');
if (!$result) {
// Kein explizites Statement-Handle – globale Fehlermeldung abrufen
echo "Fehler: " . db2_stmt_errormsg() . "\n";
}
db2_close($conn);
}
?>
// Wichtig · Fallstricke
Hinweis zur Extension: db2_stmt_errormsg() steht nur zur Verfügung, wenn die PHP-Extension ibm_db2 installiert und aktiviert ist. Sie ist nicht in der Standard-PHP-Installation enthalten und muss separat über PECL oder das IBM-Repository eingebunden werden.
Fehlerquelle unterscheiden: Verwechseln Sie diese Funktion nicht mit db2_conn_errormsg(). Letztere liefert Verbindungsfehler (z. B. falsches Passwort, Datenbank nicht erreichbar), während db2_stmt_errormsg() ausschließlich Fehler auf Anweisungsebene (SQL-Syntaxfehler, Constraint-Verletzungen usw.) meldet.
Reihenfolge beachten: Die Fehlermeldung wird nach jedem neuen Statement-Aufruf überschrieben. Rufen Sie db2_stmt_errormsg() daher unmittelbar nach dem fehlgeschlagenen Aufruf ab, bevor weitere Datenbankoperationen stattfinden.