Maison >développement back-end >tutoriel php >Comment lier correctement les opérateurs LIKE avec des caractères spéciaux dans PDO ?

Comment lier correctement les opérateurs LIKE avec des caractères spéciaux dans PDO ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 19:23:15506parcourir

How to Properly Bind LIKE Operators with Special Characters in PDO?

Utilisation d'opérateurs LIKE avec des liaisons PDO

La liaison des valeurs LIKE avec PDO peut prêter à confusion en raison de l'utilisation de caractères spéciaux ("%" et "_") dans le motif correspondant. Dans cette requête spécifique :

SELECT wrd FROM tablename WHERE wrd LIKE '$partial%'

Il existe plusieurs options pour lier la chaîne partielle '$partial%' :

  • Option 1 :
SELECT wrd FROM tablename WHERE wrd LIKE ':partial%'

Ici, le paramètre ':partial' est lié à '$partial="somet"', en ajoutant le caractère générique '%' à la fin de la chaîne.

  • Option 2 :
SELECT wrd FROM tablename WHERE wrd LIKE ':partial'

Dans ce cas, le paramètre ':partial ' est lié à '$partial="somet%"', qui inclut le caractère générique dans la limite value.

  • Option 3 (Alternative) :
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')

Cette option vous permet d'effectuer la concaténation de chaînes au sein de la requête MySQL, plutôt que dans le code PHP.

Gestion des caractères spéciaux

Si la chaîne partielle contient des caractères spéciaux comme '%', '_' ou '', des méthodes plus complexes sont nécessaires pour les échapper correctement. Voici un exemple :

$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

Dans ce code, les caractères spéciaux sont remplacés par des séquences d'échappement (' », « % » et « _ ») pour garantir qu'ils sont correctement interprétés par MySQL.

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