Qu'est-ce qu'une requête paramétrée et quel serait un exemple d'une telle requête dans PHP et MySQL?
Une requête paramétrée (également appelée instruction préparée ) est un moyen de précompiler une instruction SQL afin que tout ce que vous devez fournir soit les "paramètres "(pensez" variables ") qui doivent être insérées dans l'instruction pour être exécutées. Il est couramment utilisé comme moyen de prévention attaques par injection SQL .
Vous pouvez en savoir plus à ce sujet sur PHP page PDO (PDO étant une couche d'abstraction de base de données), bien que vous puissiez également les utiliser si vous utilisez l'interface de base de données mysqli (voir préparer documentation).
Il s'agit d'une explication claire et succincte de ce que c'est et de son fonctionnement. Comment et pourquoi utiliser le paramétrage
Essentiel, le processus implique que le serveur prétraitement de la demande sans paramètres afin qu'il connaisse le type de requête qu'il s'agit. Ainsi, par exemple, une requête SELECT n'est qu'une requête SELECT et ne peut pas être concaténée par un paramètre (variable de demande) pour être un SELECT/DROP ou une autre injection MySql. Au lieu de cela, les données d'injection seront uniquement des données de chaîne dans le champ de paramètre.
Une requête paramétrée est une requête dans laquelle des espaces réservés sont utilisés pour les paramètres et les valeurs des paramètres sont fournies au moment de l'exécution.
Pourquoi utiliser la requête paramétrée
Cette instruction est l'une des fonctionnalités du système de base de données dans laquelle la même instruction SQL s'exécute de manière répétée avec une grande efficacité. Les instructions préparées sont un type de modèle et utilisées par l'application avec différents paramètres . Article de référence
Le système de base de données peut exécuter la même instruction SQL sans effectuer l'analyse, la compilation et l'optimisation encore et encore pour le même type d'instruction SQL.
Vous pouvez écrire ou créer une instruction préparée dans MySQL, mais ce n'est pas un moyen efficace car le protocole binaire via une API d'instruction préparée est meilleur.
Mais vous pouvez toujours écrire et même cela ne nécessite aucune autre programmation que vous pouvez écrire directement en SQL. Vous pouvez utiliser une instruction préparée pour le programme client MySQL. Vous pouvez également utiliser une instruction préparée dans une procédure stockée pour l'approche SQL dynamique.
Créer une instruction préparée dans MySQL: la référence est tirée de cet article
PREPARE TestStmt FROM
'SELECT * FROM Test
WHERE TestNumber=?';
Vous pouvez utiliser PHP code pour gérer la déclaration préparée via son API ou gérer au niveau de JDBC.