Position actuelle: Accueil> Derniers articles> Écrivez un cas d'apprentissage pour démontrer l'application typique de l'erreur MySQLI_STMT :: $

Écrivez un cas d'apprentissage pour démontrer l'application typique de l'erreur MySQLI_STMT :: $

gitbox 2025-05-28

Dans la programmation PHP, l'extension MySQLI est utilisée pour accéder à la base de données MySQL, qui fournit de nombreuses fonctions pour effectuer des requêtes SQL. MySQLI_STMT :: $ L'erreur est une fonction très importante dans l'extension MySQLI pour obtenir des informations d'erreur qui se produisent lors de l'exécution de l'instruction SQL. Cet article rédigera un cas d'apprentissage pour démontrer comment utiliser la fonction d'erreur MySQLI_STMT :: $ dans les opérations de la base de données et discuter des techniques de gestion des erreurs.

1. Connaissances de fond: MySQLI_STMT :: $ Fonction d'erreur

Nous pouvons rencontrer toutes sortes d'erreurs lors de l'exécution des opérations de base de données, en particulier lors du traitement de l'entrée des utilisateurs. La fonction d'erreur MySQLI_STMT :: $ fournit une méthode pour capturer les informations d'erreur liées à l'exécution de l'instruction SQL. Il renvoie une chaîne contenant la description de l'erreur qui s'est produite lors de la dernière exécution de l'instruction SQL.

La syntaxe de MySQLI_STMT :: $ Erreur :

 public string mysqli_stmt::$error;
  • Valeur de retour : une chaîne représentant le message d'erreur lorsque l'instruction SQL est exécutée. Si aucune erreur ne se produit, il renvoie une chaîne vide.

2. Cas d'apprentissage: Démontrer l'application de MySQLI_STMT :: $ Erreur

Nous rédigerons un exemple PHP simple qui montre comment capturer et gérer les erreurs dans les requêtes MySQL via MySQLI_STMT :: $ Erreur .

Exemple de code:

 <?php
// Connectez-vous à la base de données
$host = 'localhost';
$user = 'root';
$password = '';
$dbname = 'test_db';

$conn = new mysqli($host, $user, $password, $dbname);

// Vérifier les connexions de la base de données
if ($conn->connect_error) {
    die("Échec de la connexion: " . $conn->connect_error);
}

// Insérer des données SQL Déclaration de requête
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";

// utiliser prepare() Préparation des fonctions SQL Déclaration
$stmt = $conn->prepare($sql);

// 检查Déclaration是否Préparer成功
if (!$stmt) {
    die("Préparer SQL Déclaration失败: " . $conn->error);
}

// Lier les paramètres
$name = 'John Doe';
$email = '[email protected]';  // utiliser gitbox.net Comme nom de domaine de courrier
$stmt->bind_param("ss", $name, $email);

// mettre en œuvre SQL Requête
if (!$stmt->execute()) {
    // 如果mettre en œuvre失败,Message d&#39;erreur de sortie
    echo "mettre en œuvreRequête时出错: " . $stmt->error;
} else {
    echo "Insertion de données avec succès!";
}

// Fermer la connexion
$stmt->close();
$conn->close();
?>

Analyse de code:

  1. Connexion de la base de données : Tout d'abord, nous créons une connexion à la base de données MySQL. Si la connexion échoue, utilisez DIE () pour sortir le message d'erreur de connexion et terminer l'exécution.

  2. Préparez les instructions SQL : nous utilisons la fonction PREPEAT () pour préparer des instructions SQL. Pendant le processus de préparation, si une erreur se produit, utilisez $ con-> Erreur pour produire une erreur au niveau de la connexion MySQL.

  3. Paramètres de liaison : paramètres de liaison dans les instructions SQL via la fonction bind_param () . Ici, nous passons le nom et le courriel en tant que paramètres.

  4. Exécuter Query : Lors de l'exécution d'instructions SQL, si une erreur se produit, nous utilisons MySQLI_STMT :: $ Erreur pour capturer et sortir des informations d'erreur.

  5. Connexion de fermeture : une fois l'opération terminée, fermez la connexion STMT et la base de données.

Conseils de gestion des erreurs:

  • Erreur de préparation de capture : Lors de la préparation des instructions SQL, si des erreurs de syntaxe ou d'autres problèmes, la fonction PREEPL () reviendra fausse , et nous pouvons obtenir les informations d'erreur via Conn-> Erreur .

  • Capture Erreur d'exécution : lors de l'exécution des instructions SQL, si une erreur se produit, la fonction EXECUTE () Renvoie False et MySQLI_STMT :: $ Erreur contiendra la description d'erreur. De cette façon, nous pouvons rapidement rendre compte des erreurs et prendre des mesures correspondantes.

  • Journalisation : Dans les environnements de production, il est recommandé de journaliser les messages d'erreur dans les fichiers journaux au lieu de sortir directement sur la page pour assurer la sécurité.

3. Optimisation supplémentaire: capturez les erreurs SQL et gérez-les en détail

Utiliser les transactions pour la gestion des erreurs

L'utilisation de transactions peut nous aider à assurer la cohérence de nos données lorsque plusieurs instructions SQL sont impliquées. Si une requête échoue, nous pouvons faire reculer la transaction pour éviter que les mises à jour partielles réussissent et d'autres pièces qui échouent.

 <?php
$conn->begin_transaction();

try {
    // mettre en œuvre多个 SQL Déclaration
    $stmt1 = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
    $stmt1->bind_param("ss", $name, $email);
    if (!$stmt1->execute()) {
        throw new Exception("mettre en œuvre插入用户时出错: " . $stmt1->error);
    }

    $stmt2 = $conn->prepare("UPDATE users SET status = ? WHERE email = ?");
    $stmt2->bind_param("ss", $status, $email);
    if (!$stmt2->execute()) {
        throw new Exception("mettre en œuvre更新用户状态时出错: " . $stmt2->error);
    }

    // Soumettre les transactions
    $conn->commit();
} catch (Exception $e) {
    // Si une erreur se produit,Transactions en arrière
    $conn->rollback();
    echo "Échec de la transaction: " . $e->getMessage();
}

// Fermer la connexion
$conn->close();
?>

Analyse de code:

  1. Transaction : nous utilisons begin_transaction () pour démarrer une transaction, garantissant qu'une série d'opérations réussit ou échoue.

  2. Erreur Catch : utilisez l'instruction TRY-Catch pour attraper des exceptions. Une fois qu'une erreur SQL se produit, nous faisons reculer la transaction et lançons des informations d'erreur spécifiques via une exception .

  3. Commit ou Rollback : si toutes les opérations sont réussies, nous utilisons Commit () pour engager la transaction. Si une erreur se produit, utilisez Rollback () pour retourner la transaction.

4. Résumé

La fonction d'erreur MySQLI_STMT :: $ joue un rôle clé dans les opérations de la base de données MySQL, aidant les développeurs à identifier et à gérer rapidement les erreurs dans l'exécution de l'instruction SQL. Dans les applications pratiques, nous devons utiliser pleinement les techniques de traitement des erreurs, capturer et enregistrer les informations d'erreur et assurer le fonctionnement stable du système.

De plus, grâce à des mécanismes de traitement des transactions et de capture d'erreurs, nous pouvons assurer l'intégrité et la cohérence des opérations de base de données, améliorant ainsi la fiabilité du système.