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 (将#修改为@)