我正在使用 PDO 来构建我的查询,这些查询依赖 FIND_IN_SET 来选择某些行。集合的元素通过 POST 传递到服务器,查询构造如下:
SELECT * FROM table WHERE
(FIND_IN_SET('param1', column) > 0 OR FIND_IN_SET('param2', column) > 0)
这就是查询的基本构造方式。因为要在集合中查找的参数数量是动态的,所以查询的 FIND_IN_SET 部分是动态进行的:
$q = implode("', column)>0 OR FIND_IN_SET('", $array);
然后应用于查询,如下所示:
SELECT * FROM table WHERE
AND (FIND_IN_SET(:q, e.event_type)>0);
查询最终执行为:
$countResult->execute(array(':q' => $q);
请注意,$q 可能采用以下形式:
"param1', column)>0 OR FIND_IN_SET('param2', column)>0 OR FIND_IN_SET('param3"
如果我不使用 PDO,查询会正确执行,但是使用 PDO 时,查询在数组中只有一个元素时有效,但在数组包含多个元素时不返回任何结果。
执行方法是否可能对参数做一些事情?