Maison  >  Article  >  développement back-end  >  Comment utiliser des caractères génériques avec des instructions préparées par PDO : pourquoi bindParam() échoue et comment utiliser bindValue() ou des chaînes préformatées ?

Comment utiliser des caractères génériques avec des instructions préparées par PDO : pourquoi bindParam() échoue et comment utiliser bindValue() ou des chaînes préformatées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 19:29:30844parcourir

How to Use Wildcards with PDO Prepared Statements: Why bindParam() Fails and How to Use bindValue() or Pre-Formatted Strings?

Utilisation de caractères génériques avec des instructions préparées PDO

Exécuter des requêtes SQL avec des caractères génériques à l'aide d'instructions préparées PDO (PHP Data Objects) peut être difficile. Cet article aborde le problème et propose des solutions.

La question présentée consiste à rechercher toutes les lignes de la table gc_users avec un caractère générique dans le champ de nom, qui peut être exprimé comme :

<code class="sql">SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%';</code>

Quand en essayant d'exécuter cette requête à l'aide d'instructions préparées, deux approches infructueuses ont été adoptées :

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

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

La solution préférée consiste à utiliser bindValue() au lieu de bindParam() :

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

Alternativement, comme suggéré dans la réponse fournie, bindParam() peut également être utilisé :

<code class="php">$name = "%$name%";
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name");
$query->bindParam(':name', $name);
$query->execute();</code>

Ces solutions montrent comment utiliser avec succès les caractères génériques avec les instructions préparées par PDO.

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