Maison > base de données > tutoriel mysql > Pourquoi mes requêtes PDO LIKE échouent-elles et comment puis-je les corriger ?

Pourquoi mes requêtes PDO LIKE échouent-elles et comment puis-je les corriger ?

Susan Sarandon
Libérer: 2024-12-28 12:39:23
original
504 Les gens l'ont consulté

Why Do My PDO LIKE Queries Fail, and How Can I Fix Them?

Implémentation de requêtes LIKE dans PDO

La mise en œuvre de requêtes LIKE dans PDO peut poser des défis. Prenons l'exemple de requête :

$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);
Copier après la connexion

Malgré la validité de la connexion PDO et le fonctionnement d'autres requêtes, les requêtes LIKE peuvent ne pas renvoyer de résultats.

Correction de la syntaxe

Pour corriger la requête, assurez-vous que les signes % sont inclus dans le tableau $params, plutôt que dans le requête :

$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);
Copier après la connexion

Comprendre le problème

Dans la requête d'origine, les signes % sont placés dans la requête elle-même. Cependant, lorsque la requête est préparée, les valeurs de $params sont citées à l'intérieur de la chaîne déjà citée. Cela donne une requête du type :

SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Copier après la connexion

Cette requête ne renverra aucun résultat car les valeurs ne sont pas correctement échappées. En plaçant les signes % dans le tableau $params, ils font partie des valeurs échappées et la requête s'exécutera correctement.

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