Maison > développement back-end > tutoriel php > Comment puis-je créer en toute sécurité des instructions préparées MySQL en PHP à l'aide des paramètres d'URL ?

Comment puis-je créer en toute sécurité des instructions préparées MySQL en PHP à l'aide des paramètres d'URL ?

Patricia Arquette
Libérer: 2024-12-14 00:50:17
original
668 Les gens l'ont consulté

How Can I Securely Create MySQL Prepared Statements in PHP Using URL Parameters?

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");
Copier après la connexion

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);
Copier après la connexion

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();
Copier après la connexion

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";
}
Copier après la connexion

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);
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal