Position actuelle: Accueil> Derniers articles> Utilisation de mysqli_stmt :: $ Erreur pour déboguer les problèmes dans les instructions de prétraitement

Utilisation de mysqli_stmt :: $ Erreur pour déboguer les problèmes dans les instructions de prétraitement

gitbox 2025-05-28

Lorsque vous utilisez PHP pour faire fonctionner les bases de données MySQL, les instructions préparées peuvent effectivement empêcher l'injection SQL et améliorer la sécurité et la maintenabilité du code. Cependant, diverses erreurs peuvent se produire lors des instructions de prétraitement d'écriture et d'exécution, telles que les erreurs de syntaxe, les erreurs de liaison des paramètres ou les défaillances d'exécution.

Pour localiser rapidement ces problèmes, l'erreur MySQLI_STMT :: $ est un outil de débogage très utile. Il s'agit d'une propriété dans la classe mysqli_stmt . Il peut renvoyer des informations d'erreur spécifiques lorsque l'instruction d'exécution échoue, aidant les développeurs à trouver rapidement le problème.

Utilisation de base

Voici un exemple de base en utilisant MySQLI_STMT :: $ ERROR :

 <?php
$mysqli = new mysqli("localhost", "db_user", "db_pass", "test_db");

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

$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
$stmt = $mysqli->prepare($sql);

if (!$stmt) {
    die("Le prétraitement a échoué: " . $mysqli->error);
}

// Écrit la liaison de paramètre de manière incorrecte:Supposons que deux paramètres doivent être liés,Un seul est lié ici
$stmt->bind_param("s", $username);

$username = "alice";
$email = "[email protected]";

if (!$stmt->execute()) {
    // utiliser mysqli_stmt::$error Erreur détaillée de sortie
    echo "L&#39;exécution a échoué: " . $stmt->error;
}

$stmt->close();
$mysqli->close();
?>

La sortie peut être similaire à:

 L&#39;exécution a échoué: Number of variables doesn't match number of parameters in prepared statement

Cette invite d'erreur souligne clairement le problème de l'inadéquation dans le nombre de paramètres.

Quand utiliser MySQLI_STMT :: $ Erreur

Vous pouvez utiliser cette propriété pour le débogage dans les situations suivantes:

  1. Lorsque la création de déclaration de prétraitement échoue <br> Utilisez $ mysqli-> Erreur pour obtenir des informations d'erreur.

  2. Lorsque la liaison des paramètres échoue ou décalage des nombres
    bind_param () lui-même ne rapportera pas une erreur, mais si le nombre de paramètres est incorrect, $ stmt-> L'erreur promptra lors de l'exécution.

  3. Lorsque l'exécution échoue (si des contraintes uniques sont violées)
    Par exemple, lorsque vous essayez d'insérer un e-mail en double, $ stmt-> L'erreur renvoie quelque chose comme
    Conseils pour "Entrée en double '[email protected]' pour Key 'Email'" .

Utiliser avec les journaux de débogage

Vous pouvez également enregistrer des informations d'erreur dans le journal pour le dépannage ultérieur:

 if (!$stmt->execute()) {
    error_log("Erreur d&#39;exécution du prétraitement: " . $stmt->error);
}

Cela peut éviter d'exposer des erreurs aux utilisateurs dans un environnement de production et faciliter également les développeurs à résoudre les problèmes.

Conseils pratiques

  • Ne comptez pas simplement sur Return False , assurez-vous d'afficher les détails en combinaison avec l'attribut d'erreur .

  • L'étape de développement peut produire directement les erreurs; Les journaux doivent être enregistrés dans l'environnement de production.

  • Utilisé avec ERRNO , vous pouvez obtenir des codes d'erreur pour des jugements plus détaillés.

résumé

MySQLI_STMT :: $ L'erreur est un outil très pratique dans les instructions de prétraitement de débogage. À travers elle, vous pouvez rapidement savoir pourquoi l'instruction échoue, accélérant ainsi l'efficacité de développement et réduisant le temps de dépannage.

Au cours du processus de développement, l'utilisation de cet attribut rationnellement rendra votre interaction de base de données plus robuste et fiable.