Implémenter la requête LIKE dans PDO
Dans PDO, lors de l'utilisation de l'opérateur LIKE, il est crucial d'inclure les signes % dans les paramètres, et non dans la requête elle-même. En effet, les instructions préparées par PDO encapsulent les valeurs entre guillemets, ce qui peut interférer avec les espaces réservés %.
Par exemple, considérons la requête suivante :
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'"; $params = array($var1, $var2);
Lorsque cette requête est préparée, le % les signes seront encapsulés entre guillemets, ce qui donnera une requête comme celle-ci :
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Par conséquent, la requête ne retournera aucun résultat car les guillemets doubles perturbent la fonctionnalité prévue de l'opérateur LIKE.
Pour remédier à ce problème, les signes % doivent être inclus dans les paramètres à la place :
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%");
Avec cette modification, la requête préparée recherchera correctement les adresses contenant $var1 ou $var2.
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!