PDO (PHP Data Objects) offre une interface standardisée pour interagir avec différents systèmes de base de données. Cependant, certaines de ses fonctionnalités peuvent être peu familières aux développeurs PHP, ce qui conduit à des questions courantes concernant les instructions préparées et la gestion des erreurs. Cet article répond à l'une de ces questions fréquemment posées :
Pour résoudre ce problème, il est essentiel d'activer la gestion des exceptions de PDO. Par défaut, PDO traite les erreurs comme des erreurs PHP normales, qui peuvent ne pas être visibles. Pour gérer les erreurs en tant qu'exceptions, définissez l'attribut PDO ERRMODE sur PDO::ERRMODE_EXCEPTION lors de l'établissement d'une connexion. Cela permet à PDO de lever des exceptions sur les erreurs de base de données, les rendant ainsi disponibles pour la gestion des erreurs.
Voici un exemple de configuration d'une connexion PDO avec gestion des exceptions :
$dsn = "mysql:host=$host;dbname=$db;charset=utf8"; $opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // other options ); $pdo = new PDO($dsn, $user, $pass, $opt);
Avec ce paramètre, toutes les erreurs de base de données seront levées comme exceptions. Ces exceptions peuvent être interceptées à l'aide de blocs try..catch ou d'un gestionnaire d'erreurs dédié. Les exceptions non détectées agiront comme des erreurs PHP normales, conformément aux paramètres de rapport d'erreurs à l'échelle du site.
Il est important de s'assurer que les erreurs PHP sont visibles. Sur les serveurs de production, il est recommandé de journaliser les erreurs au lieu de les afficher à l'écran. Ceci peut être réalisé en définissant :
error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1);
Sur les serveurs de développement, il peut être plus pratique d'afficher les erreurs à l'écran :
error_reporting(E_ALL); ini_set('display_errors', 1);
Évitez toujours d'utiliser l'opérateur de suppression d'erreur (@ ) avant les instructions PDO, car cela peut masquer des informations d'erreur importantes.
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!