W3docs

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ètresAucun.
Valeur de retourUn 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 surQuand l'utiliser
mysqli_connect_errno()La dernière tentative de connexionJuste 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 ouverteAprè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 avec mysqli_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_exception en 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 un try/catch au lieu d'interroger connect_errno.

Fonctions associées

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.

Pratique

Pratique
Que fait la fonction 'connect_errno' en PHP ?
Que fait la fonction 'connect_errno' en PHP ?
Was this page helpful?