Maison  >  Article  >  base de données  >  Pourquoi mes exceptions PDO renvoient-elles des valeurs nulles et ne s'exécutent-elles pas ?

Pourquoi mes exceptions PDO renvoient-elles des valeurs nulles et ne s'exécutent-elles pas ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 12:06:01373parcourir

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

Comment gérer les exceptions PDO

Problème :

Lors de l'utilisation de la classe PHP PDO, les tentatives de gestion des erreurs entraînent le code signale des valeurs nulles et reste inactif.

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>

Solution :

PDO ne lance pas automatiquement les exceptions. Pour activer la gestion des exceptions, la ligne suivante doit être ajoutée avant de tenter d'exécuter une requête :

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

Explication :

En définissant le mode d'erreur PDO sur ERRMODE_EXCEPTION, toutes les erreurs liées au PDO seront levées comme exceptions. Le bloc try/catch peut ensuite être utilisé pour gérer ces exceptions et fournir des messages d'erreur significatifs aux utilisateurs ou aux systèmes de journalisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn