Position actuelle: Accueil> Derniers articles> MySQLI_STMT :: $ Erreur d'erreur Cas de rapport de rapport d'enseignement

MySQLI_STMT :: $ Erreur d'erreur Cas de rapport de rapport d'enseignement

gitbox 2025-05-29

Lorsque vous utilisez PHP pour les opérations de base de données, MySQLI est une extension de base de données courante, où l'erreur MySQLI_STMT :: $ est utilisée pour obtenir des informations d'erreur pour les instructions SQL récemment exécutées. Comprendre et gérer ces erreurs est une partie cruciale du processus de développement. Cet article analysera plusieurs rapports d'erreur MySQLLI_STMT :: $ d'erreur communs pour aider tout le monde à mieux comprendre comment dépanner et résoudre des problèmes connexes.

1. Erreur Introduction: Qu'est-ce que MySQLI_STMT :: $ ERROR

MySQLI_STMT :: $ Erreur est un message d'erreur généré lors de l'exécution d'une instruction préparée dans l'extension MySQLI . Lors de l'exécution d'une instruction, si une erreur se produit, vous pouvez utiliser $ stmt-> Erreur pour obtenir les détails de l'erreur.

2. Analyse des cas et raisons d'erreur courants

Cas 1: Erreur de syntaxe SQL

Message d'erreur :

 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM users' at line 1

raison :
Cette erreur se produit généralement lorsque l'erreur de syntaxe de l'instruction de requête SQL. Selon le message d'erreur, on peut voir que les mots clés de sélection nécessaires sont manquants dans la requête SQL.

Solution :
Vérifiez la syntaxe dans les instructions SQL pour vous assurer que tous les champs et mots clés sont corrects. Les exemples sont les suivants:

 $sql = "SELECT * FROM users"; // Syntaxe de requête correcte
$stmt = $mysqli->prepare($sql);
$stmt->execute();
if ($stmt->error) {
    echo "SQL erreur: " . $stmt->error;
}

Cas 2: l'échec de la connexion de la base de données

Message d'erreur :

 Error: No database selected

raison :
Cette erreur se produit généralement lorsque la connexion de la base de données n'est pas correctement sélectionnée ou qu'il y a un problème dans la connexion de la base de données.

Solution :
Assurez-vous que vous vous êtes connecté avec succès à la base de données et sélectionnez la base de données correcte avant l'exécution de la requête. Les exemples sont les suivants:

 $mysqli = new mysqli('localhost', 'user', 'password', 'mydatabase'); // Assurez-vous que le nom de la base de données est correct
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

Cas 3: Paramètres de liaison manquants

Message d'erreur :

 Error: Call to a member function bind_param() on a non-object

raison :
Cette erreur se produit généralement lorsque l'instruction de préparation est exécutée et que les paramètres ne sont pas correctement liés. Bind_param est utilisé pour lier les paramètres aux espaces réservés dans les instructions SQL. Si aucun paramètre n'est lié, cette erreur sera augmentée.

Solution :
Assurez-vous que les paramètres sont liés correctement et vérifiez que le type de paramètre dans bind_param correspond au type de champ de base de données. Par exemple:

 $sql = "SELECT * FROM users WHERE username = ? AND age = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // Liaison des paramètres
$stmt->execute();
if ($stmt->error) {
    echo "SQL erreur: " . $stmt->error;
}

Cas 4: Mismatch Type de paramètre

Message d'erreur :

 Error: Argument 1 passed to mysqli_stmt::bind_param() must be of the type string, int given

raison :
Lors de l'appel Bind_param , le type du paramètre ne correspond pas au type de données entrantes. Par exemple, si vous passez dans un paramètre de type entier mais spécifiez le type de liaison en tant que chaîne ("S").

Solution :
Assurez-vous que le type de paramètre lié correspond au type de variable passé. Bind_param prend en charge les types suivants:

  • S : String (String)

  • I : entier

  • D : numéro flottant double précision (double)

  • B : Valeur booléenne (blob)

 $sql = "INSERT INTO users (username, age) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("si", $username, $age); // Reliure correcte
$stmt->execute();
if ($stmt->error) {
    echo "SQL erreur: " . $stmt->error;
}

Cas 5: le résultat de la requête est vide

Message d'erreur :

 Error: No data returned from query

raison :
Bien que cette erreur elle-même ne soit pas nécessairement une erreur de l'erreur MySQLI_STMT :: $ , elle est généralement liée au fait que les requêtes SQL ne renvoient aucun résultat. Cela peut être dû à un décalage dans les conditions de requête ou à la perte de données.

Solution :
Vérifiez les conditions de requête pour vous assurer que les données existent. Vous pouvez également vérifier que les données de la base de données existent bien avant l'interrogation.

 $sql = "SELECT * FROM users WHERE username = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $username);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // Traitement des données
} else {
    echo "Aucune donnée trouvée";
}

3. Résumé

MySQLI_STMT :: $ Une erreur est utilisée pour obtenir des informations d'erreur lors de l'exécution de l'instruction SQL. Lors de l'écriture de code PHP, en s'assurant que l'instruction de requête SQL est correcte, le type de paramètre correspond, la connexion de la base de données est normale, etc. peut éviter efficacement les erreurs courantes. De plus, pour chaque exécution de requête, n'oubliez pas de vérifier s'il y a une erreur dans $ stmt-> erreur .

En comprenant ces cas d'erreur et ces causes courants, vous pouvez mieux dépanner et résoudre les erreurs d'erreur MySQLI_STMT :: $ et améliorer l'efficacité du développement.