Position actuelle: Accueil> Derniers articles> Utilisez MySQLI_STMT :: $ Erreur pour trouver rapidement où les erreurs de clause

Utilisez MySQLI_STMT :: $ Erreur pour trouver rapidement où les erreurs de clause

gitbox 2025-05-28

Dans le développement de PHP, le débogage des erreurs des requêtes SQL est généralement une tâche fastidieuse, en particulier lorsque l'instruction de requête est complexe et contient plusieurs conditions et clauses. La propriété MySQLI_STMT :: $ Error nous fournit un outil très efficace pour découvrir et résoudre rapidement les erreurs dans les requêtes SQL, en particulier les erreurs courantes dans les clauses.

1. Concepts de base de l'utilisation de MySQLI_STMT :: $ Erreur

Tout d'abord, l'erreur MySQLI_STMT :: $ est une propriété de la classe MySQLI_STMT , qui stocke les informations d'erreur générées lorsque la dernière instruction SQL est exécutée. Normalement, MySQLI_STMT :: $ ERROR renvoie une chaîne d'erreur. S'il n'y a pas de problème avec l'exécution de la requête SQL, la propriété renvoie une chaîne vide.

Cela fait de MySQLI_STMT :: $ Erreur un outil important pour attraper les erreurs SQL, en particulier lors du débogage du complexe les clauses.

2. FAQ sur les erreurs de la clause dans les requêtes SQL

Dans la clause , les erreurs communes incluent:

  • Colonne ou nom de table incorrect

  • Mauvais opérateur de comparaison (comme utiliser == au lieu de = )

  • Mauvaise syntaxe (par exemple les supports manquants)

  • Comparaison inappropriée du type de données (comme la comparaison des chaînes aux nombres)

Ces erreurs ne sont généralement pas facilement détectées intuitivement, en particulier lorsque les instructions de requête SQL sont longues.

3. Erreur de positionnement de la clause à l'aide de MySQLI_STMT :: $ Erreur

Voici les étapes pour déboguer les requêtes SQL et localiser les erreurs de la clause via mysqli_stmt :: $ Erreur :

3.1 Configuration des déclarations de connexion et de préparation de la base de données

Tout d'abord, créez une connexion de base de données MySQLI et préparez une instruction SQL.

 <?php
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

// Déclarations de prétraitement
$stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ? AND age > ?");

if ($stmt === false) {
    die("Échec de la déclaration: " . $mysqli->error);
}
?>

3.2 Bind Paramètres et exécuter les instructions

Ensuite, nous lions les paramètres de requête et exécutons l'instruction. Ici, nous pouvons délibérément faire le champ d'âge dans l'erreur de clause , comme passer une valeur d'âge illégale.

 <?php
$username = "john_doe";
$age = "twenty";  // Ici, nous définissons délibérément l&#39;âge sur une chaîne,Pas des nombres

$stmt->bind_param("si", $username, $age);

$stmt->execute();
?>

3.3 Vérifiez les erreurs

Après avoir exécuté la requête SQL, vous pouvez vérifier si l'instruction SQL est exécutée avec succès via MySQLI_STMT :: $ Erreur . Si une erreur se produit, il renverra un message d'erreur détaillé, nous aidant à localiser rapidement le problème.

 <?php
if ($stmt->error) {
    echo "SQL erreur: " . $stmt->error;
} else {
    echo "Interroger réussi";
}
?>

À ce stade, $ stmt-> L'erreur publiera un message d'erreur similaire à ce qui suit:

 SQL erreur: Unknown column 'twenty' in 'where clause'

D'après le message d'erreur, vous pouvez voir qu'une erreur s'est produite dans le champ d'âge dans la clause où la vingt chaîne entrante n'est pas un numéro juridique.

4. Autres compétences de débogage

En plus d'utiliser l'erreur MySQLI_STMT :: $ , vous pouvez prendre quelques étapes de débogage supplémentaires:

  • L'impression d'une requête SQL complète : parfois, la visualisation manuelle des requêtes SQL est également un moyen efficace de déboguer. Bien que MySQLI ne prenne pas directement en charge les instructions de requête liées à la sortie, vous pouvez créer manuellement les chaînes de requête et les sortir.

  • Afficher le journal des erreurs MySQL : Si le serveur de base de données le prend en charge, vous pouvez également afficher les journaux d'erreur MySQL, qui contient généralement plus de détails sur les erreurs SQL.

5. Résumé

Avec la propriété MySQLI_STMT :: $ ERROR , les développeurs PHP peuvent rapidement attraper et localiser les erreurs dans les clauses lors de l'exécution de requêtes SQL. Ceci est particulièrement important pour les déclarations de requête complexes. La combinaison des compétences raisonnables de gestion des erreurs et de débogage peut efficacement améliorer l'efficacité du débogage et éviter les erreurs SQL courantes.