Les instructions préparées par PDO peuvent-elles lier des identifiants ou des mots-clés de syntaxe ?
Dans le but de construire une requête dynamique avec des variables représentant une table, un champ /column et une valeur à rechercher, on peut rencontrer des difficultés inattendues lors de l'utilisation des instructions préparées par PDO. Plus précisément, l'utilisation de bindParam() ou bindValue() pour lier ces variables peut entraîner des ensembles de résultats vides.
Pour approfondir le nœud du problème, il est crucial de comprendre que les espaces réservés PDO sont désignés pour représenter des littéraux de données. Par conséquent, tenter de les utiliser comme identifiants (comme les noms de tables ou de champs) ou comme mots-clés de syntaxe (par exemple, "LIKE") peut conduire à un comportement erroné.
Plus précisément, PDO n'offre aucune prise en charge inhérente pour les identifiants de liaison. . Cela implique que les développeurs doivent assumer eux-mêmes la responsabilité de gérer ces identifiants. Pour garantir une bonne exécution, il existe des règles strictes à respecter :
Règles pour les identifiants de liaison :
Ces règles de formatage évitent les erreurs de syntaxe et vulnérabilités d'injection SQL.
Règles de liaison des mots-clés de syntaxe :
Exemple :
Considérez l'extrait de code suivant, qui respecte les règles susmentionnées :
$allowed = array("name", "price", "qty"); $key = array_search($_GET['field'], $allowed); $field = $allowed[$key]; $query = "SELECT $field FROM t"; // Value is safe
En résumé, bien que les instructions préparées par PDO excellent dans la liaison des littéraux de données, elles ne prennent pas en charge les identifiants de liaison ou les mots-clés de syntaxe. En suivant scrupuleusement les règles décrites, les développeurs peuvent garantir l'exécution sûre et précise des requêtes dynamiques qui utilisent ces composants critiques.
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!