Maison > base de données > tutoriel mysql > Comment lier en toute sécurité des valeurs LIKE avec PDO en PHP ?

Comment lier en toute sécurité des valeurs LIKE avec PDO en PHP ?

Susan Sarandon
Libérer: 2024-12-05 15:01:14
original
525 Les gens l'ont consulté

How to Safely Bind LIKE Values with PDO in PHP?

Liaison de valeurs LIKE avec PDO

Dans une requête dans laquelle vous souhaitez effectuer une correspondance de chaîne partielle à l'aide de l'opérateur LIKE, liez les valeurs LIKE à l'aide l'extension PDO peut prêter à confusion. Voyons comment gérer cela correctement.

Correspondance de chaîne partielle avec LIKE

Lorsque vous utilisez l'opérateur LIKE, vous ajoutez % à la chaîne partielle pour rechercher les enregistrements correspondants. Par exemple :

SELECT wrd FROM tablename WHERE wrd LIKE '$partial%'
Copier après la connexion

Ici, $partial représente la chaîne à laquelle la colonne wrd doit correspondre.

Liaison avec PDO

Pour lier le $valeur partielle en utilisant PDO, vous disposez de plusieurs options :

  1. Lier avec des caractères génériques dans la requête : Vous pouvez inclure le caractère générique % directement dans la requête, comme :
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :partial");
$stmt->bindParam(':partial', $partial);
Copier après la connexion

Ici, $partial est lié à l'espace réservé :partial sans aucune modification.

  1. Lier sans caractères génériques dans la requête : Cette méthode supprime le caractère générique % de la requête, vous avez donc besoin pour l'ajouter manuellement lors de la liaison :
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')");
$stmt->bindParam(':partial', $partial);
Copier après la connexion
  1. Gestion des caractères spéciaux : Si la chaîne partielle contient des caractères qui ont une signification particulière dans les requêtes LIKE (par exemple, %, _, ), vous devez échapper ces caractères avant de lier :
$escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $partial);
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$stmt->bindParam(':term', $escaped);
Copier après la connexion

En suivant ces directives, vous pouvez lier efficacement AIMEZ les valeurs à l'aide de PDO et effectuez des correspondances de chaînes partielles dans vos requêtes 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!

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