Position actuelle: Accueil> Derniers articles> Common Pdostatement :: Codes d'erreur ErrorCode et leurs solutions. Comment résoudre les problèmes courants?

Common Pdostatement :: Codes d'erreur ErrorCode et leurs solutions. Comment résoudre les problèmes courants?

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n&#39;a rien à voir avec le contenu de l&#39;article,Peut être ajouté comme vous le souhaitez PHP Commenter ou initialiser le code</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"L&#39;initialisation est terminée\n"</span></span><span>;
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

------------------------------------------------------------

</span><span><span class="hljs-comment"># Commun PDOStatement::errorCode Code d&#39;erreur et sa solution,Comment dépanner les FAQ?</span></span><span>

exister PHP milieu,utiliser PDO(PHP Data Objects)Lorsque vous effectuez des opérations de base de données,Nous rencontrons souvent `</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` Retourner le code d&#39;erreur。Comprendre ces codes d&#39;erreur et leurs significations,Pour des problèmes de positionnement rapide、L&#39;amélioration de l&#39;efficacité du développement est très importante。Cet article présentera en détail les codes d&#39;erreur courants、Causes et solutions,Et fournir des idées de dépannage。

</span><span><span class="hljs-comment">## un、PDOStatement::errorCode Introduction</span></span><span>

`</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` 方法返回un个 SQLSTATE Code d&#39;erreur,这是un个 </span><span><span class="hljs-number">5</span></span><span> 位的标准化Code d&#39;erreur,Utilisé pour l&#39;identification SQL 执行milieu的错误情况:

- Les deux premiers chiffres indiquent la catégorie d&#39;erreur(Class)
- Les trois derniers chiffres indiquent des erreurs spécifiques(Subclass)

Exemple d&#39;appel:

```php
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$errorCode</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorCode</span></span><span>; </span><span><span class="hljs-comment">// Sortie possible "42S02"</span></span><span>
</span></span>

2. Codes et raisons d'erreur courantes

Voici les codes d'erreur qui sont souvent rencontrés dans le développement et leurs raisons possibles:

1. 00000 - pas d'erreurs

Indique que l'exécution de SQL est réussie et aucune erreur ne se produit. Ceci est un retour normal de l'APD.

2. 01000 - Message d'avertissement

Généralement utilisé pour les avertissements non mortels, tels que:

  • Avertissement de conversion de type de données automatique

  • L'exécution de SQL réussit mais il y a un message d'avertissement

Des informations détaillées peuvent être obtenues via Pdostation :: errorInfo () .

3. 23000 - violations des contraintes

Scénarios typiques:

  • Répétez l'insertion de clé primaire

  • La contrainte de clé étrangère a échoué

  • Conflit d'index unique

Solution:

  • Vérifiez si les données insérées existent déjà

  • Assurez-vous que les données associées aux clés étrangères existent

  • Ajuster la logique commerciale pour éviter les opérations répétées

4. 42000 - Problèmes d'erreur de syntaxe ou d'autorisation d'accès

Raisons courantes:

  • Erreur de syntaxe SQL

  • Nom de table ou de champ mal orthographié

  • Les autorisations utilisateur de la base de données actuelles sont insuffisantes

Méthode de dépannage:

  • Imprimez le SQL complet et exécutez-le dans l'outil de gestion de la base de données

  • Vérifiez la configuration d'autorisation des utilisateurs de la base de données

  • Confirmez que le nom du tableau et le nom du champ sont corrects

5. Hy000 - Erreur générale

Il s'agit d'un code d'erreur commun, ce qui signifie généralement que l'APD ne peut pas déterminer la cause spécifique de l'erreur. Les raisons possibles comprennent:

  • Connexion de base de données déconnectée

  • Délai d'exécution

  • Erreur interne du pilote

Solution:

  • Vérifier l'état de la connexion de la base de données

  • Ajouter une configuration de délai

  • Afficher le journal de la base de données pour plus d'informations

6. Code d'erreur spécifique à la base de données

En plus des codes d'erreur standard SQLSTATE, certaines bases de données peuvent renvoyer des codes d'erreur spécifiques, tels que MySQL 23000 est également accompagné du numéro d'erreur MySQL 1062 (clé de répétition). Dans ce cas, le message d'erreur d'origine du pilote de base de données peut être obtenu en combinaison avec le troisième élément de Pdostatement :: errorInfo () :

 <span><span><span class="hljs-variable">$errorInfo</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorInfo</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// Sortie des informations d&#39;erreur détaillées renvoyées par le pilote de base de données</span></span><span>
</span></span>

3. Étapes suggérées pour dépanner les erreurs de pdostativement

  1. Vérifiez l'exactitude de la déclaration SQL <br> Imprimez SQL et effectuez une vérification sur le client de la base de données.

  2. Afficher le message d'erreur complet <br> Utilisez ErrorInfo () pour obtenir des informations détaillées pour aider à analyser les problèmes.

  3. Vérifier la liaison des paramètres <br> Confirmez que le type et l'ordre des paramètres de liaison sont corrects.

  4. Confirmer l'état de la connexion de la base de données <br> Si la connexion est accidentellement déconnectée, elle peut entraîner une erreur HY000.

  5. Vérifiez le journal de la base de données <br> De nombreuses erreurs sont enregistrées dans les journaux de la base de données en détail.

4. Exemple de code: capturez les erreurs et les informations détaillées de sortie

 <span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users(id, name) VALUES(:id, :name)"</span></span><span>);
    </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':id'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">':name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Alice'</span></span><span>]);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error Code: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>());
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Exception message: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

Avec les méthodes ci-dessus, les erreurs de pdostament communes peuvent être rapidement localisées et résolues.

5. Résumé

  • Pdostatement :: ErrorCode fournit des codes d'erreur SQLState standard pour aider à déterminer rapidement les types d'erreurs.

  • ErrorInfo () renvoie des informations plus détaillées sur la couche de pilote pour un dépannage précis.

  • Les erreurs communes incluent les violations des contraintes, les erreurs de syntaxe, les autorisations insuffisantes et les erreurs générales.

  • Un processus d'investigation systématique peut aider les développeurs à localiser des problèmes dans un court laps de temps et à améliorer l'efficacité du développement.

La maîtrise des codes d'erreur APD et des méthodes de dépannage peut rendre vos opérations de base de données plus sûres et plus fiables, tout en évitant les interruptions de programmes anormaux en raison d'une mauvaise gestion des erreurs.

 <span></span>