Maison >base de données >tutoriel mysql >Les caractères génériques peuvent-ils être utilisés en toute sécurité avec les instructions préparées par PDO ?

Les caractères génériques peuvent-ils être utilisés en toute sécurité avec les instructions préparées par PDO ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 02:07:10619parcourir

Can Wildcards Be Safely Used with PDO Prepared Statements?

Utilisation de caractères génériques dans les instructions préparées PDO

Dans le domaine de la programmation de bases de données, il est souvent nécessaire d'effectuer des requêtes impliquant des caractères génériques. Les caractères génériques, tels que le symbole %, nous permettent de faire correspondre une plage de valeurs dans nos critères de recherche. Dans ce contexte, la question se pose de savoir s'il est possible d'utiliser des caractères génériques en conjonction avec des instructions préparées par PDO.

Pour commencer, revenons sur la requête mentionnée dans l'enquête originale :

SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'

Cette requête vise à récupérer tous les enregistrements de la table gc_users où le champ nom contient la sous-chaîne "anyname". Une approche pour exécuter une telle requête à l'aide d'instructions préparées par PDO consiste à lier les caractères génériques directement au paramètre. Cependant, cette méthode peut conduire à des vulnérabilités d'injection SQL.

Une approche plus sécurisée consiste à lier les caractères génériques au paramètre en tant que valeur de chaîne. Ceci peut être réalisé en préfixant et en ajoutant les caractères génériques à la variable de paramètre avant de la lier à l'instruction préparée. Par exemple :

$name = "%anyname%";
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$query->bindParam(':name', $name);
$query->execute();

Alternativement, il est également possible de lier des paramètres en tant que valeurs à l'aide debindValue() :

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindValue(':name', '%' . $name . '%');
$stmt->execute();

En adhérant à ces directives, vous pouvez exploiter efficacement les caractères génériques dans les PDO préparés déclarations tout en préservant l’intégrité et la sécurité de vos applications de base de données.

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!

Déclaration:
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