1

我想让用户过滤结果。

为此,我有几个下拉列表,默认情况下设置为“全部”。这些字段的值通过 POST 方法发送到 php,然后我继续:

if ($variable == "All") {
$variable = '%';
}

然后在 PDO 语句中,WHERE 子句是这样的:

WHERE field LIKE :variable

之后我通过一个数组传递变量

我得到一个除以零的错误,这很奇怪,因为当我对 SQL 查询进行硬编码时

field LIKE '%'

一切都好...

感谢您的帮助,非常感谢,因为我一直在尝试许多选项来解决这个问题!

4

2 回答 2

0

除以零错误实际上是因为我的 SQL 查询包含一个适用于 SQL 但 php 不能很好解释的 CONCAT(name,'%')。

相反, CONCAT(name, "%") 工作得很好......

菜鸟失误!

于 2013-03-14T14:07:48.033 回答
0

而不是添加许多无用的 WHERE 条件,例如

field1 LIKE :value1 OR field2 LIKE :value2 OR field3 LIKE :value3

生成类似的查询

field1 LIKE '%' OR field2 LIKE '%' OR field3 LIKE '%actual filter%'

这只会导致查询的执行时间更长,您应该编写仅在设置时添加过滤器的条件。

于 2013-03-13T23:05:05.347 回答