Position actuelle: Accueil> Derniers articles> Comment préparer et exécuter une instruction de prétraitement SQL à l'aide de la fonction MySQLI :: STMT_INIT?

Comment préparer et exécuter une instruction de prétraitement SQL à l'aide de la fonction MySQLI :: STMT_INIT?

M66 2025-06-26

En PHP, l'utilisation de l'extension MySQLI peut nous aider à nous connecter à la base de données et à exécuter des requêtes. Pour améliorer la sécurité et empêcher l'injection SQL, MySQLI fournit des instructions préparées. Dans cet article, nous expliquerons comment utiliser la fonction MySQLI :: STMT_INIT pour préparer et exécuter une instruction de prétraitement SQL.

Que sont les déclarations de prétraitement?

Les instructions de prétraitement sont une méthode d'interaction de la base de données. Ils peuvent séparer les instructions SQL des données, envoyer d'abord le modèle de la requête SQL à la base de données, puis lier les paramètres à la requête. Cela peut empêcher les attaques d'injection SQL et améliorer la sécurité.

Introduction à la fonction MySQLI :: STMT_INIT

MySQLI :: STMT_INIT est une méthode de la classe MySQLI qui est utilisée pour initialiser une nouvelle instruction de prétraitement. Il renvoie un objet mysqli_stmt qui peut être utilisé pour lier les paramètres et exécuter les requêtes SQL.

Étapes pour préparer et exécuter des instructions de prétraitement SQL

Voici les étapes pour préparer et exécuter des instructions de prétraitement SQL à l'aide de la fonction MySQLI :: STMT_INIT :

1. Créez une connexion de base de données

Tout d'abord, nous devons nous connecter à la base de données MySQL. Vous pouvez utiliser la classe MySQLI pour créer une connexion de base de données.

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);

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

2. Initialiser les déclarations de prétraitement

Initialisez un nouvel objet d'instruction de prétraitement à l'aide de la fonction mysqli :: stmt_init . Cet objet sera utilisé pour lier les paramètres et exécuter les requêtes SQL.

 <?php
// Initialiser les déclarations de prétraitement
$stmt = $conn->stmt_init();

// Vérifiez si l&#39;initialisation est réussie
if (!$stmt) {
    die("L&#39;initialisation de la déclaration de prétraitement a échoué: " . $conn->error);
}
?>

3. Préparer la requête SQL

Utilisez la méthode de préparation pour préparer des instructions de requête SQL. Supposons que nous souhaitions exécuter une requête de sélection simple et obtenir des informations utilisateur dans la base de données.

 <?php
$sql = "SELECT * FROM users WHERE email = ?";
$stmt->prepare($sql);
?>

4. Bind Paramètres

Utilisez la méthode bind_param pour lier les variables aux espaces réservés ( ? ) Dans la requête SQL. Dans cet exemple, nous lierons un paramètre de type de chaîne (e-mail de l'utilisateur).

 <?php
$email = "user@example.com";
$stmt->bind_param("s", $email); // "s" Représente le type de chaîne
?>

5. Exécuter la requête

Utilisez la méthode EXECUTE pour exécuter SQL Query.

 <?php
$stmt->execute();
?>

6. Obtenez les résultats de la requête

Une fois la requête exécutée avec succès, vous pouvez utiliser la méthode get_result pour obtenir le jeu de résultats et renvoyer un objet mysqli_result .

 <?php
$result = $stmt->get_result();

// Obtenez les résultats et affichez-les
while ($row = $result->fetch_assoc()) {
    echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}
?>

7. Déclaration et connexions étroites

Une fois la requête terminée, n'oubliez pas de fermer l'instruction de prétraitement et la connexion de la base de données.

 <?php
$stmt->close();
$conn->close();
?>

Résumer

Grâce aux étapes ci-dessus, nous pouvons préparer et exécuter avec succès une instruction de prétraitement SQL à l'aide de la fonction MySQLI :: STMT_INIT . Les instructions de prétraitement améliorent non seulement la sécurité du code, empêchent les attaques d'injection SQL, mais améliorent également l'efficacité des requêtes de base de données, en particulier lorsque les mêmes requêtes sont exécutées plusieurs fois.

 $url = "https://api.m66.net/data"; // Remplacer le nom de domaine par m66.net