connect_errno
Découvrez la fonction mysqli_connect_errno() en PHP pour récupérer le code d'erreur de la dernière tentative de connexion MySQLi.
La fonction mysqli_connect_errno() retourne le code d'erreur de la dernière tentative de connexion MySQLi, ou 0 si aucune erreur n'est survenue. C'est la méthode standard pour vérifier si un appel à mysqli_connect() (ou le constructeur new mysqli()) a bien réussi avant d'exécuter des requêtes. Cette page couvre sa syntaxe, sa valeur de retour, ses différences avec les fonctions associées, et les pièges à éviter.
Pourquoi la vérification de la connexion est importante
Lorsqu'une connexion MySQLi échoue, le handle $mysqli est quand même retourné, mais il est inutilisable. Si vous omettez la vérification et exécutez immédiatement une requête, PHP émet un avertissement et votre script continue de s'exécuter avec une connexion défectueuse — produisant souvent des erreurs confuses en aval. Appeler mysqli_connect_errno() juste après la connexion vous permet d'échouer rapidement avec un message clair.
Un détail important : mysqli_connect_errno() est une fonction autonome. Elle s'appelle sans arguments — elle lit l'état global de la tentative de connexion la plus récente, et non un objet de connexion spécifique.
Syntaxe
mysqli_connect_errno(): int| Paramètres | Aucun. |
| Valeur de retour | Un int : le code d'erreur (errno) de la dernière tentative de connexion, ou 0 si la dernière tentative a réussi. |
Le code numérique correspond à un numéro d'erreur client MySQL/MariaDB — par exemple 1045 pour accès refusé ou 2002 pour connexion refusée. Pour le message lisible par l'humain, associez-le à mysqli_connect_error().
Utilisation de base (style procédural)
Appelez la fonction immédiatement après mysqli_connect() et quittez tôt si elle est non nulle :
<?php
$mysqli = mysqli_connect("localhost", "username", "password", "database");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
exit();
}
echo "Connected successfully.";
// execute queries using $mysqli
mysqli_close($mysqli);
?>Si les identifiants sont incorrects, cela affiche quelque chose comme Failed to connect to MySQL: Access denied for user 'username'@'localhost' et s'arrête. En cas de succès, cela affiche Connected successfully.. Comme le code d'erreur est truthy uniquement lorsqu'il est non nul, if (mysqli_connect_errno()) se lit naturellement comme « si une erreur s'est produite ».
Style orienté objet
Lorsque vous utilisez la classe mysqli, l'équivalent de mysqli_connect_errno() est la propriété connect_errno de l'objet. Lisez-la de la même façon — immédiatement après la construction :
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
exit();
}
echo "Connected successfully.";
// execute queries using $mysqli
$mysqli->close();
?>Ici, $mysqli->connect_errno contient le code numérique et $mysqli->connect_error contient le message — les combiner (par exemple (1045) Access denied...) facilite la recherche dans les entrées de journal.
connect_errno vs. fonctions associées
Il est facile de confondre les fonctions d'erreur de connexion avec les fonctions d'erreur générales de MySQLi. Elles portent sur des choses différentes :
| Fonction / propriété | Porte sur | Quand l'utiliser |
|---|---|---|
mysqli_connect_errno() | La dernière tentative de connexion | Juste après la connexion |
mysqli_connect_error() | La dernière tentative de connexion (message) | Pour afficher une erreur de connexion lisible |
mysqli_errno() | La dernière requête sur une connexion ouverte | Après mysqli_query() etc. |
mysqli_error() | La dernière requête (message) | Pour afficher une erreur de requête lisible |
En résumé : utilisez connect_errno/connect_error pour le handshake, et errno/error pour les requêtes une fois connecté.
Pièges courants
- Il ne reflète que la tentative la plus récente. Si vous ouvrez plusieurs connexions,
mysqli_connect_errno()rapporte la dernière. Pour une précision par objet en code OO, préférez$mysqli->connect_errno. - Vérifiez-le avant la première requête, pas après. Une fois que vous exécutez une requête,
mysqli_connect_errno()reflète toujours la tentative de connexion, mais le confondre avecmysqli_errno()entraîne des bugs. - Une vérification truthy suffit. Vous avez rarement besoin de comparer le code à un nombre spécifique ;
if (mysqli_connect_errno())couvre tous les échecs. - Envisagez les exceptions à la place. Depuis PHP 8.1, MySQLi lève
mysqli_sql_exceptionen cas d'erreur par défaut (mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT)), donc une connexion échouée lève une exception plutôt que de retourner un handle défectueux. Dans ce mode, vous encapsulez la connexion dans untry/catchau lieu d'interrogerconnect_errno.
Fonctions associées
mysqli_connect()— ouvrir une connexion.mysqli_connect_error()— message pour la dernière erreur de connexion.mysqli_real_connect()— ouvrir une connexion avec des options supplémentaires.- Vue d'ensemble de l'extension MySQLi — contexte plus large sur MySQLi.
Conclusion
mysqli_connect_errno() est la vérification la plus rapide et la plus fiable qu'une connexion MySQLi s'est ouverte correctement : une valeur de retour non nulle signifie que le handshake a échoué, 0 signifie que vous pouvez exécuter des requêtes. Associez-la à mysqli_connect_error() pour des messages lisibles, distinguez-la bien de mysqli_errno() au niveau des requêtes, et sur PHP 8.1+ envisagez try/catch avec le mode exception comme alternative moderne.