在 PDO 中实现 LIKE 查询 [英] implement LIKE query in PDO
问题描述
我在 PDO 中实现 LIKE 时遇到问题
I am running problems in implementing LIKE in PDO
我有这个查询:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);
我检查了 $var1
和 $var2
它们包含我想要搜索的两个词,我的 PDO 工作正常,因为我的一些查询 SELECT
INSERT
他们工作,只是我不熟悉LIKE
这里的PDO.
I checked the $var1
and $var2
they contain both the words I want to search, my PDO is working fine since some of my queries SELECT
INSERT
they work, it's just that I am not familiar in LIKE
here in PDO.
结果没有返回.我的 $query
在语法上是否正确?
The result is none returned. Do my $query
is syntactically correct?
推荐答案
您必须在 $params
中包含 %
符号,而不是在查询中:>
You have to include the %
signs in the $params
, not in the query:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);
如果您查看之前代码中生成的查询,您会看到类似 SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%' 的内容
,因为准备好的语句在已经引用的字符串中引用您的值.
If you'd look at the generated query in your previous code, you'd see something like SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
, because the prepared statement is quoting your values inside of an already quoted string.
这篇关于在 PDO 中实现 LIKE 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!