在 PDO 中实现 LIKE 查询 [英] implement LIKE query in PDO

查看:24
本文介绍了在 PDO 中实现 LIKE 查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆