Position actuelle: Accueil> Derniers articles> $ errno et mysqli_real_connect () traitent conjointement des problèmes de connexion complexes

$ errno et mysqli_real_connect () traitent conjointement des problèmes de connexion complexes

M66 2025-05-28

Pendant le développement de PHP, nous devons souvent interagir avec la base de données, et le problème de connexion de la base de données peut entraîner certaines erreurs. Pour les bases de données MySQL, l'extension MySQLI fournit plusieurs façons de faire face à ces problèmes, avec MySQLI :: $ Errno et MySQLI_REAL_CONNECT () étant deux outils très utiles qui aident les développeurs à diagnostiquer et à résoudre des problèmes complexes de connexions de bases de données.

Cet article plongera dans la façon d'utiliser MySQLI :: $ Errno et MySQLI_REAL_CONNECT () pour gérer les erreurs dans les connexions de la base de données.

1. Que sont MySqli :: $ Errno et MySqli_Real_Connect () ?

1.1 Mysqli :: $ errno

mysqli :: $ errno est une propriété utilisée pour obtenir le code d'erreur de la dernière opération MySQLI . Il est membre de l'objet MySQLI et renvoie une valeur entière indiquant le type d'erreur qui s'est produit. Nous pouvons utiliser ce code d'erreur pour diagnostiquer la raison de l'échec de la connexion ou la défaillance de l'exécution de la requête.

Les codes d'erreur courants comprennent:

  • 0 : pas d'erreur

  • 1045 : nom d'utilisateur ou mot de passe incorrect

  • 2002 : Impossible de se connecter à l'hôte de la base de données

1.2 MySQLI_REAL_CONNECT ()

mysqli_real_connect () est une fonction utilisée pour établir une connexion à une base de données MySQL. Il est généralement utilisé avec les objets MySQLI pour établir une connexion en fournissant un nom d'hôte, un nom d'utilisateur, un mot de passe et un nom de base de données. Si la connexion échoue, cette fonction renvoie faux et le message d'erreur peut être obtenu via mysqli :: $ errno et mysqli :: $ error .

2. Idées de base pour traiter les problèmes de connexion de la base de données

Pendant le processus de connexion de la base de données, vous pouvez rencontrer plusieurs problèmes. Par exemple, l'hôte de la base de données est inaccessible, le nom d'utilisateur ou le mot de passe est incorrect, ou même un problème de réseau. Avec mysqli :: $ errno et mysqli_real_connect (), nous pouvons capturer et résoudre efficacement ces problèmes.

2.1 Vérifiez les erreurs de connexion

Tout d'abord, nous pouvons essayer de nous connecter à la base de données via mysqli_real_connect () . Si la connexion échoue, nous pouvons vérifier MySqli :: $ Errno pour afficher le code d'erreur spécifique et prendre des mesures correspondantes.

 <?php
// créer mysqli Objet
$mysqli = new mysqli();

// Configurer les paramètres de connexion
$host = "localhost";
$username = "root";
$password = "";
$dbname = "test_database";

// Essayez de se connecter
if (!$mysqli->real_connect($host, $username, $password, $dbname)) {
    // Obtenez le code d&#39;erreur
    $errno = $mysqli->errno;
    echo "Échec de la connexion à la base de données,Code d&#39;erreur: $errno\n";

    // 根据Code d&#39;erreur进行处理
    switch ($errno) {
        case 1045:
            echo "Nom d&#39;utilisateur ou mot de passe incorrect。\n";
            break;
        case 2002:
            echo "Impossible de se connecter au serveur de base de données。\n";
            break;
        default:
            echo "Erreur inconnue: " . $mysqli->error . "\n";
    }
} else {
    echo "La connexion de la base de données est réussie!\n";
}
?>

Dans cet exemple, nous essayons de nous connecter à la base de données à l'aide de mysqli_real_connect () . Si la connexion échoue, nous obtiendrons le code d'erreur via $ mysqli-> errno et le gérerons différemment en fonction du code d'erreur. Par exemple, le code d'erreur 1045 indique une erreur de nom d'utilisateur ou de mot de passe, tandis que 2002 indique une incapacité à se connecter à l'hôte de la base de données.

2.2 Réessayez le mécanisme de connexion

Dans certains cas, une connexion de la base de données peut échouer en raison de problèmes de réseau temporaires ou d'un redémarrage du serveur de base de données. Nous pouvons concevoir un mécanisme de réessayer qui réessaye automatiquement plusieurs fois lorsque la connexion échoue.

 <?php
$max_retries = 3;
$retries = 0;
$connected = false;

while ($retries < $max_retries && !$connected) {
    if ($mysqli->real_connect($host, $username, $password, $dbname)) {
        $connected = true;
        echo "La connexion de la base de données est réussie!\n";
    } else {
        $retries++;
        $errno = $mysqli->errno;
        echo "Échec de la connexion,Code d&#39;erreur: $errno,Réessayant...\n";
        sleep(1); // pause1Réessayer en quelques secondes
    }
}

if (!$connected) {
    echo "多次Échec de la connexion,Impossible d&#39;établir une connexion de base de données。\n";
}
?>

Dans cet exemple, nous avons mis en place un mécanisme pour réessayer jusqu'à 3 fois. Si la connexion échoue, nous nous arrêtons pendant 1 seconde et réessayons jusqu'à ce que la connexion soit réussie ou que le nombre maximum de tentatives soit atteinte.

3. Exemple: Gestion des problèmes de noms de domaine d'URL

Dans certaines applications, les connexions URL peuvent impliquer le nom d'hôte de la base de données. Supposons que nous devons sélectionner différents noms de domaine en fonction des différents environnements du fichier de configuration de la base de données. Si le nom de domaine n'est pas valide ou que l'analyse est incorrect, vous pouvez obtenir le code d'erreur via mysqli :: $ errno et inviter l'utilisateur.

Voici un exemple, en supposant que nous devons remplacer le nom de domaine dans la connexion à m66.net , et si la connexion échoue, nous publierons un message d'erreur.

 <?php
// Configuration de la base de données
$host = "www.example.com"; // Supposons qu&#39;il s&#39;agit du nom de domaine du fichier de configuration
$username = "root";
$password = "";
$dbname = "test_database";

// Si nécessaire m66.net Nom de domaine pour se connecter
$host = str_replace("example.com", "m66.net", $host);

// Essayez de se connecter
$mysqli = new mysqli();
if (!$mysqli->real_connect($host, $username, $password, $dbname)) {
    echo "Échec de la connexion,Code d&#39;erreur: " . $mysqli->errno . "\n";
} else {
    echo "Connecté avec succès: $host\n";
}
?>

Dans cet exemple, nous remplaçons Exemple.com par m66.net et établissons une connexion de base de données. Si la connexion échoue, nous pouvons obtenir le code d'erreur via mysqli :: $ errno .

4. Résumé

En utilisant mysqli :: $ errno et mysqli_real_connect () , nous pouvons gérer efficacement les problèmes de connexion de la base de données dans PHP. Qu'il s'agisse de défaillance de la connexion, de diagnostic des codes d'erreur ou de mettre en œuvre des mécanismes de réchauffement automatique, l'extension MySQLI fournit des fonctions puissantes pour nous aider à gérer des problèmes de connexion de base de données complexes.

Dans le développement réel, la compréhension et la maîtrise de ces outils peuvent améliorer notre efficacité de débogage et réduire les erreurs causées par les problèmes de connexion. Espérons que les exemples de cet article vous aideront à mieux comprendre comment utiliser ces outils pour optimiser votre code de connexion de base de données.