微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PDO 使用未知的 OR 语句准备

如何解决PDO 使用未知的 OR 语句准备

我的网站上有一个搜索功能,允许用户定义要搜索的关键字。 搜索处理每天进行一次,因此关键字存储在表格中。

到目前为止我使用的解决方案是将关键字存储为 sql 查询

+---------+--------------------------------------------+------+
| user_id | subquery                                   | type |
+---------+--------------------------------------------+------+
|    1    | desc LIKE '%test1%' OR desc LIKE '%test1%' | buy  |
+---------+--------------------------------------------+------+

(子查询列可以包含用户想要的关键字)

然后通过以下方式进行研究:

$req = "SELECT user_id,subquery,type FROM table";
$res = $pdo->prepare($req);
$res->execute();

while ($rows = $res->fetch(PDO::FETCH_ASSOC)) {
   $req2 = "SELECT * FROM items_tbl WHERE (".$rows['subquery'].") and type = '".$rows['type']."'";
   $res2 = $pdo->prepare($req2);
   $res2->execute();
   while($rows2 = $res2->fetch(PDO::FETCH_ASSOC)) {
      Do stuff...
   }
}

我现在想使用准备好的语句来捕获异常,所以我尝试过:

while ($rows = $res->fetch(PDO::FETCH_ASSOC)) {
   $req2 = "SELECT * FROM items_tbl WHERE (:subquery) and type=:type";
   $res2 = $pdo->prepare($req2);
   $res2->execute(array('subquery' => $rows['subquery'],'type' => $rows['type']));
   while($rows2 = $res2->fetch(PDO::FETCH_ASSOC)) {
      Do stuff...
   }
}

它什么都不返回,WHERE(:subquery)没有被合适的内容填充。

这样做的正确方法是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。