Position actuelle: Accueil> Derniers articles> Comment activer et afficher les rapports d'erreur détaillés dans PDO :: EXEC pour résoudre les problèmes?

Comment activer et afficher les rapports d'erreur détaillés dans PDO :: EXEC pour résoudre les problèmes?

M66 2025-06-28

Lorsque vous utilisez PDO (PHP Data Objectts) dans PHP pour les opérations de base de données, la méthode EXEC () est souvent utilisée pour exécuter des instructions SQL qui ne renvoient pas les ensembles de résultats, tels que l'insertion , la mise à jour , la suppression , etc. Cet article expliquera comment activer et afficher des rapports d'erreur détaillés lors de l'utilisation de PDO :: Exec .


1. Qu'est-ce que PDO :: Exec?

La méthode PDO :: EXEC exécute une instruction SQL et renvoie le nombre de lignes affectées. Si l'exécution échoue, il renvoie faux . Cependant, par défaut, les messages d'erreur ne seront pas automatiquement sortis et le mode d'erreur doit être activé manuellement et les détails d'erreur sont obtenus.

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    echo "L&#39;exécution a échoué,Mais aucun message d&#39;erreur détaillé。";
} else {
    echo "Il a affecté {$result} D&#39;ACCORD。";
}
?>

2. Activer le rapport d'erreur détaillé

L'OPD prend en charge une variété de modes de gestion des erreurs, les plus couramment utilisés sont:

  • PDO :: errmode_silent : mode par défaut, aucune erreur n'est lancée, seuls les codes d'erreur sont enregistrés.

  • PDO :: errmode_warning : déclenche l'avertissement PHP.

  • PDO :: errmode_exception : lance une exception.

Nous vous recommandons d'utiliser PDO :: errmode_exception , qui vous permet d'obtenir des informations d'erreur détaillées en attrapant des exceptions.

 <?php
try {
    $pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE users SET status = 'active' WHERE id = 10";
    $result = $pdo->exec($sql);

    echo "Il a affecté {$result} D&#39;ACCORD。";

} catch (PDOException $e) {
    echo "执D&#39;ACCORD出错: " . $e->getMessage();
}
?>

3. Afficher les détails d'erreur

Si vous n'utilisez pas le mode d'exception, vous pouvez afficher le message d'erreur de la manière suivante:

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    $errorInfo = $pdo->errorInfo();
    echo "Code d&#39;erreur: " . $errorInfo[0] . "<br>";
    echo "驱动Code d&#39;erreur: " . $errorInfo[1] . "<br>";
    echo "message d&#39;erreur: " . $errorInfo[2];
} else {
    echo "Il a affecté {$result} D&#39;ACCORD。";
}
?>

errorInfo () renvoie un tableau:

  • [0] Code d'erreur SqlState (code d'erreur standard)

  • [1] Code d'erreur spécifique au pilote

  • [2] Message d'erreur spécifique au conducteur


4. Suggestions pratiques

  • Il est recommandé d'activer PDO :: errmode_exception pendant la phase de débogage pour faciliter la capture des exceptions et la localisation des erreurs.

  • L'environnement de production considère la connexion après avoir attrapé des exceptions pour éviter la sortie directe de messages d'erreur aux utilisateurs.

  • Assurez-vous que le jeu de caractères de connexion de la base de données est correctement défini pour éviter les erreurs causées par le codage des caractères.

  • Utilisez des instructions de prétraitement ( préparez + exécuter ) pour empêcher l'injection SQL et faciliter également le dépannage des erreurs.


Grâce à la méthode ci-dessus, vous pouvez facilement activer et afficher des rapports d'erreur détaillés lorsque vous utilisez PDO :: Exec , améliorant efficacement l'efficacité de débogage et localisez rapidement les problèmes.

  • Étiquettes associées:

    PDO