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
Susan Sarandonoriginal
2024-12-28 12:39:23532parcourir

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);

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);

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"%'

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!

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