Position actuelle: Accueil> Derniers articles> Explication détaillée de l'usage de base de MySqli :: STMT_INIT

Explication détaillée de l'usage de base de MySqli :: STMT_INIT

M66 2025-05-29

Dans PHP, l'extension MySQLI fournit des fonctions de fonctionnement de la base de données MySQL puissantes, où la fonction MySQLI :: STMT_INIT est une fonction clé utilisée pour initialiser une instruction de prétraitement. Cet article expliquera en détail comment initialiser et préparer des instructions MySQL à l'aide de la fonction MySQLI :: STMT_INIT .

Que sont les déclarations de prétraitement?

Les déclarations de prétraitement sont une technologie fournie par MySQL pour améliorer l'efficacité et la sécurité de l'exécution SQL. En utilisant des instructions de prétraitement, les requêtes SQL sont envoyées au serveur de base de données pour l'analyse et les données sont transmises lors de l'exécution. Cela améliore non seulement l'efficacité de l'exécution, mais empêche également efficacement des problèmes de sécurité tels que l'injection SQL.

Dans PHP, lorsque vous utilisez l'extension MySQLI pour les opérations de base de données, vous pouvez initialiser un objet d'instruction de prétraitement via la méthode STMT_INIT , puis préparer l'instruction SQL via la méthode Pread () .

Utilisation de base de la fonction MySQLI :: STMT_INIT

La fonction mysqli :: stmt_init est utilisée pour créer un objet mysqli_stmt , qui est nécessaire pour exécuter des instructions de prétraitement.

grammaire

 $stmt = $mysqli->stmt_init();

Ici $ mysqli est un objet de connexion MySQLI valide.

Exemple: Initialiser les instructions de prétraitement à l'aide de la fonction STMT_INIT

 <?php
// Se connecter à MySQL base de données
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// Vérifiez si la connexion réussit
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// Initialiser un objet de déclaration de prétraitement
$stmt = $mysqli->stmt_init();

// Vérifiez si l&#39;initialisation est réussie
if ($stmt === false) {
    die("Failed to initialize statement.");
}

// Préparer SQL Déclaration
$query = "SELECT id, name FROM users WHERE email = ?";
if ($stmt->prepare($query)) {
    // Lier les paramètres
    $stmt->bind_param("s", $email); // 's' Représente le type de chaîne

    // Définir les valeurs des paramètres
    $email = "user@m66.net";

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

    // Résultats de liaison
    $stmt->bind_result($id, $name);

    // Obtenez les résultats de la requête
    while ($stmt->fetch()) {
        echo "ID: $id, Name: $name\n";
    }

    // 关闭Déclaration
    $stmt->close();
} else {
    echo "Failed to prepare statement.";
}

// 关闭base de données连接
$mysqli->close();
?>

Analyse des étapes détaillée

  1. Connectez-vous à la base de données <br> Utilisez New MySQLI () pour vous connecter à la base de données MySQL et vérifier si la connexion réussit.

  2. Initialiser les déclarations de prétraitement <br> Appelez $ mysqli-> stmt_init () pour initialiser un objet de déclaration de prétraitement $ stmt . Si false est renvoyé, cela signifie que l'initialisation a échoué.

  3. Préparer les déclarations SQL <br> Utilisez la méthode $ stmt-> Préparer ($ query) pour préparer l'instruction SQL. ? est un espace réservé qui représente les paramètres de la requête.

  4. Lier les paramètres <br> Utilisez la méthode $ stmt-> bind_param () pour lier les paramètres réels à l'espace réservé dans l'instruction de prétraitement. "S" signifie que ce paramètre est un type de chaîne.

  5. Instruction d'exécution <br> Utilisez $ stmt-> execute () pour exécuter les requêtes SQL.

  6. Résultat de liaison <br> Utilisez $ stmt-> bind_result () pour lier les résultats de la requête à une variable PHP.

  7. Obtenir les résultats de la requête <br> Utilisez $ stmt-> fetch () pour obtenir le résultat de la requête et le sortir via la variable liée.

  8. Déclarations et connexions étroites <br> Utilisez $ stmt-> close () pour fermer l'objet de l'instruction de prétraitement, et enfin utilisez $ mysqli-> close () pour fermer la connexion de la base de données.

Pourquoi utiliser mysqli :: stmt_init ?

  1. Améliorer les performances <br> Les instructions de prétraitement peuvent améliorer considérablement l'efficacité de l'exécution de la même requête plusieurs fois en effectuant à l'avance le processus d'analyse de la requête SQL.

  2. Empêcher l'injection SQL <br> En liant les paramètres, MySQLI peut éviter efficacement les attaques d'injection SQL.

  3. Facile à gérer et à maintenir <br> Utilisez la fonction STMT_INIT pour initialiser l'objet d'instruction, ce qui rend la structure de code plus claire et plus facile à entretenir.