Comment configurer correctement PDO pour gérer les erreurs de préparation des requêtes en PHP
Lors de l'exécution de requêtes SQL à l'aide de PDO PHP, il est essentiel de gérer correctement les erreurs . La méthode préparer() peut générer des erreurs MySQL, mais les paramètres par défaut peuvent empêcher leur affichage.
Définition du mode d'erreur
Pour capturer les erreurs dans la méthode préparer() , définissez l'attribut PDO PDO::ATTR_ERRMODE sur PDO::ERRMODE_EXCEPTION. Cela générera des exceptions lorsque des erreurs se produisent.
Désactivation de l'émulation
De plus, désactivez la fonctionnalité PDO::ATTR_EMULATE_PREPARES pour garantir que MySQL traite l'instruction immédiatement. Sinon, l'erreur risque de ne pas être détectée avant l'exécution.
Exemple
L'exemple suivant montre comment configurer PDO pour gérer correctement les erreurs :
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); try { $pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)'); } catch (PDOException $e) { // Handle the error message $errorMessage = $e->getMessage(); }
Sortie d'erreur
Lors de la tentative d'exécution d'une requête non valide, l'exemple ci-dessus s'imprimera (ou enregistrez) le message d'erreur :
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.DoesNotExist' doesn't exist
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!