Heim  >  Artikel  >  Datenbank  >  Warum werfen meine PDO-Ausnahmen Nullwerte aus und werden nicht ausgeführt?

Warum werfen meine PDO-Ausnahmen Nullwerte aus und werden nicht ausgeführt?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 12:06:01373Durchsuche

Why Are My PDO Exceptions Throwing Null Values and Not Executing?

So behandeln Sie PDO-Ausnahmen

Problem:

Bei der Verwendung der PHP-PDO-Klasse führen Versuche, Fehler zu behandeln, zu Der Code meldet Nullwerte und bleibt inaktiv.

Code:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Exception handling is enabled

$id = 33;
$name = "Mario Bros.";
$url = "http://nintendo.com";
$country = "jp";

try {
    $sql = "UPDATE table_users SET name = :name, url = :url, country = :country WHERE user_id = :user_id";
    $statement = $connection->prepare($sql);
    $statement->bindParam(':user_id', trim($id), PDO::PARAM_INT);
    $statement->bindParam(':name', trim($name), PDO::PARAM_STR);
    $statement->bindParam(':url', trim($url), PDO::PARAM_STR);
    $statement->bindParam(':country', trim($country), PDO::PARAM_STR, 2);
    $status = $statement->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}</code>

Lösung:

PDO löst nicht aus Ausnahmen automatisch. Um die Ausnahmebehandlung zu aktivieren, muss die folgende Zeile hinzugefügt werden, bevor versucht wird, Abfragen auszuführen:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);</code>

Erklärung:

Durch Festlegen des PDO-Fehlermodus auf ERRMODE_EXCEPTION, Alle PDO-bezogenen Fehler werden als Ausnahmen ausgelöst. Der try/catch-Block kann dann verwendet werden, um diese Ausnahmen zu behandeln und aussagekräftige Fehlermeldungen an Benutzer oder Protokollierungssysteme bereitzustellen.

Das obige ist der detaillierte Inhalt vonWarum werfen meine PDO-Ausnahmen Nullwerte aus und werden nicht ausgeführt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn