-1

以下行引发异常 -

$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");

致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000]:一般错误:1 在“%”附近:语法错误'

去掉 % 符号可以消除错误,但显然搜索无法按我的意愿工作。我尝试使用引号,输入一个实际值而不是 :-prefixed PDO 变量,唯一摆脱错误的方法是删除 % 符号。我不知所措。

4

1 回答 1

1

LIKE运算符接受一个字符串:

$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");

请注意,空白:name将匹配所有内容 ( '%%')

Sqlite 用于||连接字符串,'%' || :name || '%'应该这样做。

另一种方法(取自这个问题)是将百分号添加到参数的值中。所以你会有一个查询LIKE :name,然后在绑定参数之前,添加百分号:$name = '%'.$name.'%'; $sth->execute(array('name' => $name));

于 2013-10-29T07:14:54.470 回答