Aktueller Standort: Startseite> Neueste Artikel> So aktivieren und sehen Sie detaillierte Fehlerberichte in PDO :: Exec zur Fehlerbehebung bei Problemen?

So aktivieren und sehen Sie detaillierte Fehlerberichte in PDO :: Exec zur Fehlerbehebung bei Problemen?

M66 2025-06-28

Bei der Verwendung von PDO (PHP -Datenobjekten) in PHP für Datenbankvorgänge wird die Exec () -Methode häufig verwendet, um SQL -Anweisungen auszuführen, die keine Ergebnissätze wie einfügen , aktualisieren , löschen usw. während des Entwicklungs- und Debugging -Prozesses nicht zurückgeben, detailliertere Fehlerinformationen benötigen häufig, um Probleme zu beheben. In diesem Artikel wird erläutert, wie detaillierte Fehlerberichte bei Verwendung von PDO :: Exec aktiviert und angezeigt werden.


1. Was ist PDO :: Exec?

Die PDO :: EXEC -Methode führt eine SQL -Anweisung aus und gibt die Anzahl der betroffenen Zeilen zurück. Wenn die Ausführung fehlschlägt, gibt sie falsche zurück. Standardmäßig werden Fehlermeldungen nicht automatisch ausgegeben, und der Fehlermodus muss manuell aktiviert und Fehlerdetails erhalten werden.

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    echo "Ausführung fehlgeschlagen,Aber keine detaillierte Fehlermeldung。";
} else {
    echo "Es hat betroffen {$result} OK。";
}
?>

2. Schalten Sie einen detaillierten Fehlerbericht ein

PDO unterstützt eine Vielzahl von Fehlerbehandlungsmodi, die am häufigsten verwendeten, sind:

  • PDO :: ERRMODE_SILENT : Standardmodus, es werden keine Fehler geworfen, nur Fehlercodes werden aufgezeichnet.

  • Pdo :: errmode_warning : löst die PHP -Warnung aus.

  • Pdo :: errmode_exception : legt eine Ausnahme aus.

Wir empfehlen die Verwendung von PDO :: errmode_exception , mit dem Sie detaillierte Fehlerinformationen erhalten können, indem Sie Ausnahmen erfassen.

 <?php
try {
    $pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE users SET status = 'active' WHERE id = 10";
    $result = $pdo->exec($sql);

    echo "Es hat betroffen {$result} OK。";

} catch (PDOException $e) {
    echo "执OK出错: " . $e->getMessage();
}
?>

3.. Fehlerdetails anzeigen

Wenn Sie den Ausnahmemodus nicht verwenden, können Sie die Fehlermeldung auf folgende Weise anzeigen:

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    $errorInfo = $pdo->errorInfo();
    echo "Fehlercode: " . $errorInfo[0] . "<br>";
    echo "驱动Fehlercode: " . $errorInfo[1] . "<br>";
    echo "Fehlermeldung: " . $errorInfo[2];
} else {
    echo "Es hat betroffen {$result} OK。";
}
?>

FehlerInfo () gibt ein Array zurück:

  • [0] SQLState -Fehlercode (Standardfehlercode)

  • [1] Treiberspezifische Fehlercode

  • [2] Treiberspezifische Fehlermeldung


4. Praktische Vorschläge

  • Es wird empfohlen, PDO :: errmode_exception während der Debugging -Phase zu aktivieren, um die Fangausnahmen und die Aufdeckung von Fehlern zu erleichtern.

  • Die Produktionsumgebung berücksichtigt die Anmeldung nach dem Auffang von Ausnahmen, um die direkten Ausgabe von Fehlermeldungen an Benutzer zu vermeiden.

  • Stellen Sie sicher, dass der Datenbankverbindungszeichen korrekt festgelegt ist, um Fehler zu vermeiden, die durch Zeichencodierung verursacht werden.

  • Verwenden Sie Vorverarbeitungsanweisungen ( vorbereiten + ausführen ), um die SQL -Injektion zu verhindern und die Fehlerbehebung der Fehler zu erleichtern.


Über die obige Methode können Sie bei Verwendung von PDO :: EXEC leicht einschalten und detaillierte Fehlerberichte anzeigen, wodurch die Debugging -Effizienz effektiv verbessert und Probleme schnell lokalisiert werden.

  • Verwandte Tags:

    PDO