Position actuelle: Accueil> Derniers articles> Comment utiliser mysqli :: $ errno pour la journalisation des erreurs valide en php?

Comment utiliser mysqli :: $ errno pour la journalisation des erreurs valide en php?

gitbox 2025-08-14

Comment utiliser mysqli :: $ errno pour la journalisation des erreurs valide en php?

Dans le développement de PHP, les opérations de base de données sont la partie la plus courante. Lors de l'interaction avec les bases de données, en particulier lors de l'utilisation d'extensions MySQLI , la capture et l'enregistrement des erreurs sont cruciaux pour le débogage et la maintenance du programme. MySQLI fournit le mysqli :: $ Errno et MySQLI :: $ des attributs d'erreur pour aider les développeurs à comprendre les causes spécifiques des erreurs dans les opérations de base de données.

Cet article présentera comment utiliser mysqli :: $ errno pour une journalisation des erreurs efficace, aidant les développeurs à mieux gérer les erreurs qui peuvent être rencontrées lors des connexions et des opérations de base de données.

1. Qu'est-ce que mysqli :: $ errno?

MySQLI :: $ Errno est une propriété de la classe MySQLI qui est utilisée pour stocker le code d'erreur lorsqu'une erreur s'est produite dans la dernière opération de base de données. Ce code d'erreur est une valeur entière qui identifie le type d'erreur spécifique qui s'est produit. MySQLI :: $ Errno ne peut obtenir des valeurs valides que lorsqu'une erreur se produit dans une opération de base de données. Si aucune erreur ne se produit, sa valeur sera 0.

De plus, l'attribut d'erreur MySQLI :: $ contient des informations de description détaillées de l'erreur (c'est-à-dire le message d'erreur). Ces deux attributs peuvent aider les développeurs à diagnostiquer avec précision le problème.

2. Codes d'erreur MySQLI communes

La valeur du code d'erreur de mysqli :: $ errno est prédéfinie. Voici quelques codes d'erreur courants et leurs significations:

  • 1045 : Erreur d'autorisation lors de l'accès à la base de données (comme le nom d'utilisateur ou l'erreur de mot de passe).

  • 2002 : La connexion a échoué, généralement parce que l'hôte de la base de données est inaccessible.

  • 1146 : Le tableau n'existe pas.

  • 1064 : Erreur de syntaxe SQL.

3. Utilisez mysqli :: $ errno pour enregistrer les erreurs

Dans le développement réel, en plus d'erreurs de capture, nous devons généralement enregistrer ces erreurs pour une visualisation et une analyse ultérieures. Voici un exemple de base montrant comment utiliser mysqli :: $ errno et mysqli :: $ Erreur pour la journalisation des erreurs:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Configurer les paramètres de connexion de la base de données</span></span><span>
</span><span><span class="hljs-variable">$host</span></span><span> = </span><span><span class="hljs-string">'localhost'</span></span><span>;
</span><span><span class="hljs-variable">$user</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">'password'</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">'test_db'</span></span><span>;

</span><span><span class="hljs-comment">// Créer une connexion de base de données</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);

</span><span><span class="hljs-comment">// Vérifiez si la connexion réussit</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-comment">// Erreurs de connexion logarithmique</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;connect_error, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
    </span><span><span class="hljs-keyword">exit</span></span><span>();
}

</span><span><span class="hljs-comment">// Exécuter une requête</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM non_existent_table"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</span><span><span class="hljs-comment">// Vérifiez si la requête est réussie</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-comment">// Si la requête échoue,Les informations d&#39;erreur de journal et les codes d&#39;erreur</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Error: "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;errno . </span><span><span class="hljs-string">" - "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;error . </span><span><span class="hljs-string">"\n"</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
}

</span><span><span class="hljs-comment">// Fermer la connexion</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Dans cet exemple, essayez d'abord de vous connecter à la base de données. Si la connexion échoue, une erreur de connexion est connectée au fichier errors.log . Ensuite, nous effectuons une opération de requête, essayant d'obtenir des données à partir d'une table inexistante. Si la requête échoue, nous capturerons le message d'erreur et enregistrerons le code d'erreur et le message d'erreur ensemble.

4. combinant des horodatages pour la journalisation des erreurs

Dans un environnement de production, l'enregistrement des journaux d'erreur doit avoir un certain degré d'aptitude, de sorte que les enregistrements de journal d'erreur peuvent être ajoutés aux enregistrements du journal d'erreur, ce qui est plus facile à suivre les problèmes.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Obtenez l&#39;heure actuelle</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);

</span><span><span class="hljs-comment">// Exécuter une requête并记录错误日志</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$result</span></span><span>) {
    </span><span><span class="hljs-comment">// Ajouter l&#39;horodatage au journal</span></span><span>
    </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"[<span class="hljs-subst">$date</span></span></span><span>] Error: " . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;errno . </span><span><span class="hljs-string">" - "</span></span><span> . </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;error . </span><span><span class="hljs-string">"\n"</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'errors.log'</span></span><span>);
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

En ajoutant l'heure actuelle à chaque journal d'erreur, nous pouvons clairement voir le temps spécifique de chaque erreur, aidant les développeurs à effectuer un dépannage plus précis.

5. Gestion et optimisation des journaux d'erreur

Au fil du temps, les fichiers journaux d'erreur peuvent devenir extrêmement importants, affectant les performances du système et la maintenabilité. Par conséquent, il est très important de nettoyer régulièrement et d'archiver les journaux d'erreur. Les méthodes suivantes peuvent être utilisées pour optimiser la gestion des journaux d'erreur:

  1. Archives et nettoyage réguliers: configurez une tâche planifiée pour archiver régulièrement les fichiers journaux d'erreur et nettoyer les anciens fichiers journaux.

  2. Rotation du journal: utilisez des outils de rotation de journal (tels que Logrotate ) pour gérer automatiquement la taille des fichiers journaux.

  3. Journaux de classement: Selon la gravité de l'erreur, différents niveaux de journal (tels que les informations, les avertissements, les erreurs) sont utilisés pour l'enregistrement.

6. Résumé

Avec mysqli :: $ errno et mysqli :: $ error , les développeurs PHP peuvent facilement attraper et enregistrer les erreurs dans les opérations de base de données. La combinaison des horodatages, de la gestion des fichiers journaux et des stratégies de nettoyage, de l'enregistrement du journal des erreurs et de l'optimisation peuvent être effectués efficacement. Ces mesures peuvent non seulement aider les développeurs à découvrir des problèmes en temps opportun pendant les phases de développement et de test, mais également de fournir des indices importants pour le dépannage ultérieur dans l'environnement de production.

J'espère que grâce à l'introduction de cet article, vous pouvez mieux comprendre comment utiliser MySqli :: $ Errno pour une journalisation des erreurs efficaces et l'appliquer à un développement réel pour améliorer la robustesse et la maintenabilité de votre code.