Création d'instructions préparées MySQL sécurisées en PHP
Les instructions préparées offrent une sécurité accrue et des améliorations potentielles des performances pour les requêtes de base de données. Voici un guide complet pour créer des instructions préparées MySQL sécurisées en PHP à l'aide des paramètres d'URL.
Création d'instructions préparées
Instancier une connexion MySQLi et préparer une instruction à l'aide de mysqli_prepare( ):
$db = new mysqli("host","user","pw","database"); $stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");
Reliure Paramètres
Utilisez mysqli_stmt_bind_param() pour lier les valeurs des paramètres d'entrée aux espaces réservés des instructions :
$userid = intval($_GET['userid']); $category = intval($_GET['category']); $stmt->bind_param('ii', $userid, $category);
Exécuter et récupérer des données
Exécuter le instruction préparée et récupérez les résultats en utilisant mysqli_stmt_execute() et mysqli_stmt_store_result() :
$stmt->execute(); $stmt->store_result();
Utilisez mysqli_stmt_bind_result() pour lier les noms de colonnes aux variables et parcourir les résultats :
$stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; }
Flexibilité améliorée pour les tableaux associatifs
Pour les requêtes qui renvoient plusieurs colonnes (par exemple, SELECT *), vous pouvez utiliser la fonction stmt_bind_assoc() pour lier les résultats à un tableau associatif :
$resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
Améliorations des performances
Lors de l'utilisation de préparés les instructions peuvent augmenter les performances pour plusieurs exécutions de la même requête, la surcharge de création et de préparation de l'instruction peut ne pas justifier leur utilisation pour seulement trois ou quatre exécutions.
En suivant ces étapes, vous pouvez vous assurer que vos requêtes MySQL sont sécurisées et efficaces.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!