Maison > développement back-end > tutoriel php > Comment gérer correctement les erreurs d'instruction de préparation PDO en PHP ?

Comment gérer correctement les erreurs d'instruction de préparation PDO en PHP ?

DDD
Libérer: 2024-12-07 04:56:10
original
793 Les gens l'ont consulté

How to Properly Handle PDO Prepare Statement Errors in PHP?

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();
}
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal