10

我一直在尝试在准备好的语句中使用 LIKE,但是由于使用通配符 % 导致语法错误,php 不会执行该语句。

这是代码

$query = pg_prepare($conn, "MyStatement", 
    'SELECT "Query" from "MyTable" 
     WHERE "Query" LIKE $1% 
     ORDER BY "MyColumn" DESC;');

$result = pg_execute($conn, "MyStatement", array($my_param));

问题是 php 在第二行向我显示了一个警告,声称存在语法错误。

4

1 回答 1

16

我在使用 PDO 适配器绑定参数时遇到了同样的问题。解决方案是将“%”与变量一起传递:

$query = pg_prepare($conn, "MyStatement", 
'SELECT "Query" from "MyTable" 
 WHERE "Query" LIKE $1 
 ORDER BY "MyColumn" DESC;');

$result = pg_execute($conn, "MyStatement", array($my_param."%"));

如果你需要

...LIKE '%param%' ...

那么您的查询将是:

$result = pg_execute($conn, "MyStatement", array("%".$my_param."%"));
于 2012-05-17T00:46:53.797 回答