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
Libérer: 2024-10-29 19:29:30
original
843 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!