web-dev-qa-db-fra.com

Qu'est-ce qu'une requête paramétrée?

Qu'est-ce qu'une requête paramétrée et quel serait un exemple d'une telle requête dans PHP et MySQL?

30
totalnoobs

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).

22
John Parker

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.

3
user945389

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

  1. La raison la plus importante pour utiliser des requêtes paramétrées est d'éviter les attaques par injection SQL.
  2. La deuxième requête paramétrée prend en charge le scénario où la requête SQL pourrait échouer, par exemple insertion d'O'Baily dans un champ. La requête paramétrée traite cette requête sans vous forcer à remplacer les guillemets simples par des guillemets simples doubles.
2
user7193303

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.

1
Anvesh