Maison > base de données > tutoriel mysql > le corps du texte

Les instructions préparées par PDO peuvent-elles lier des noms de tables et de colonnes, ou des mots-clés SQL ?

Mary-Kate Olsen
Libérer: 2024-11-24 10:25:12
original
516 Les gens l'ont consulté

Can PDO Prepared Statements Bind Table and Column Names, or SQL Keywords?

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 :

  1. Entourez les identifiants entre des guillemets.
  2. Échapper aux guillemets dans l'identifiant en les doublant.

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 :

  1. Bien que le formatage des mots-clés ne soit pas disponible, la liste blanche est cruciale.
  2. Vérifiez que les mots-clés dynamiques correspondent à une liste de valeurs autorisées pour empêcher les mots-clés arbitraires substitution.

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

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!

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