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

Les instructions préparées peuvent-elles gérer les identifiants et les mots-clés de base de données ?

Linda Hamilton
Libérer: 2024-11-18 18:46:02
original
592 Les gens l'ont consulté

Can Prepared Statements Handle Database Identifiers and Keywords?

Déclarations préparées : peuvent-elles gérer des identifiants et des mots-clés ?

Les requêtes dynamiques utilisent des variables pour spécifier des tables, des champs et des valeurs de recherche. Bien que la concaténation de variables dans la requête se soit avérée efficace, l'utilisation de bindParam() ou bindValue() de PDO pour lier les variables donne lieu à des tableaux vides.

Pourquoi cela ne fonctionne pas :

Les instructions préparées par PDO autorisent uniquement des espaces réservés pour les littéraux de données. Tenter de représenter des identifiants (noms de table ou de champ) ou des mots-clés à l'aide d'espaces réservés ne fonctionnera pas.

La solution :

  • Identifiants : Pour inclure des variables représentant des identifiants, suivez ces règles :

    • Placez les identifiants dans backticks (`).
    • Évitez les backticks dans la variable en les doublant (``).
  • Mots clés :

    • Vérifiez les mots-clés fournis par l'utilisateur par rapport à une liste blanche.
    • À utiliser uniquement mots-clés en liste blanche dans la requête.

Exemple de code :

// Safely format identifier
$field = "`" . str_replace("`", "``", $field) . "`";
$sql = "SELECT * FROM t ORDER BY $field";

// Whitelist keyword
$dir = $_GET['dir'] == 'DESC' ? 'DESC' : 'ASC';
$sql = "SELECT * FROM t ORDER BY field $dir";
Copier après la connexion

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