Position actuelle: Accueil> Derniers articles> Comment appeler EXECUTE () après avoir utilisé STMT_INIT

Comment appeler EXECUTE () après avoir utilisé STMT_INIT

M66 2025-05-29

Lorsque vous utilisez PHP pour faire fonctionner les bases de données MySQL, l'extension MySQLI fournit des instructions de prétraitement riches (instructions préparées), qui peuvent effectivement empêcher les attaques d'injection SQL et améliorer la sécurité et l'efficacité des opérations de base de données. Cet article se concentrera sur la façon d'initialiser un objet d'instruction à l'aide de la méthode MySQLI :: STMT_INIT et exécuter des instructions SQL via l'objet.

1. Qu'est-ce que mysqli :: stmt_init ?

mysqli :: stmt_init () est une méthode de la classe mysqli , utilisée pour initialiser un objet de déclaration vide ( mysqli_stmt ). Cet objet peut être lié aux instructions de requête SQL en appelant la méthode prépare () et en outre appelée bind_param () , exécuter () et d'autres méthodes de fonctionnement.

La syntaxe de base est la suivante:

 $stmt = $mysqli->stmt_init();

$ mysqli est un objet mysqli qui a été connecté à la base de données.

2. Exemple complet: utilisez STMT_INIT pour exécuter une requête SQL

Voici un exemple PHP complet à l'aide de l'instruction d'initialisation STMT_INIT et exécutant des requêtes SQL:

 <?php
// Connexion de base de données
$mysqli = new mysqli("localhost", "username", "password", "database");

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

// Initialiser l&#39;objet de l&#39;instruction
$stmt = $mysqli->stmt_init();

// Prétraitement SQL Déclaration
if ($stmt->prepare("SELECT name, email FROM users WHERE id = ?")) {
    // Lier les paramètres
    $id = 1;
    $stmt->bind_param("i", $id);

    // 执行Déclaration
    $stmt->execute();

    // Variables de résultat de liaison
    $stmt->bind_result($name, $email);

    // Obtenez les résultats de la requête
    while ($stmt->fetch()) {
        echo "Nom d&#39;utilisateur: $name, Mail: $email<br>";
    }

    // 关闭Déclaration
    $stmt->close();
} else {
    echo "SQL Prétraitement失败: " . $stmt->error;
}

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

3. Choses à noter

  • Après avoir appelé STMT_INIT () , vous devez utiliser la méthode Pread () pour lier réellement l'instruction SQL.

  • Les paramètres de type dans bind_param (), par exemple, "i" représente un entier, et "s" représente une chaîne, doit être réglé correctement.

  • Assurez-vous d'appeler $ stmt-> clôture () après avoir utilisé l'objet instruction pour libérer la ressource.

4. Pourquoi utiliser stmt_init au lieu de directement $ mysqli-> prépare () ?

Bien que vous puissiez utiliser directement $ mysqli-> préparé () pour la préparation de la déclaration, STMT_INIT () fournit un contrôle plus détaillé, comme plus utile lorsque vous devez vérifier si l'instruction est réutilisable ou utiliser une interface de bas niveau.

5. Exemples de scénarios d'application pratiques