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.
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é.
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.
Voici les étapes pour préparer et exécuter des instructions de prétraitement SQL à l'aide de la fonction MySQLI :: STMT_INIT :
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);
}
?>
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'initialisation est réussie
if (!$stmt) {
die("L'initialisation de la déclaration de prétraitement a échoué: " . $conn->error);
}
?>
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);
?>
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
?>
Utilisez la méthode EXECUTE pour exécuter SQL Query.
<?php
$stmt->execute();
?>
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>";
}
?>
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();
?>
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