Récupération des erreurs de requête de PDO prepare() en PHP
Lors de l'utilisation de la méthode prepare() en PDO PHP pour préparer une requête de base de données, il est essentiel de gérer les erreurs potentielles. L'exemple original cité dans la question n'a pas réussi à gérer efficacement les erreurs de requête.
Pour vérifier correctement les erreurs de requête, suivez ces étapes :
1. Configurer la gestion des erreurs PDO :
Définissez le mode de gestion des erreurs PDO sur PDO::ERRMODE_EXCEPTION à l'aide de la méthode setAttribute() :
$st = $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Cela demande à PDO de lever des exceptions pour les erreurs de base de données, ce qui facilite leur identification et leur gestion. eux.
2. Désactiver l'émulation :
Désactivez la fonctionnalité PDO::ATTR_EMULATE_PREPARES en définissant sa valeur sur false :
$st = $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Cela désactive un Couche d'émulation PHP, garantissant que le serveur MySQL analyse les requêtes immédiatement après l'appel à préparer().
3. Catch Exceptions :
Puisque la méthode prepare() génère désormais des exceptions pour les erreurs, utilisez les blocs "try-catch" pour les gérer :
try { $st = $db->prepare('INSERT INTO DoesNotExist (x) VALUES (?)'); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); }
Ce code affichera le message d'erreur suivant lorsque la table inexistante DoesNotExist est référencée :
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!