以下行引发异常 -
$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");
致命错误:带有消息'SQLSTATE [HY000]的未捕获异常'PDOException':常规错误:1接近“%”:语法错误'
取出%符号可以消除错误,但显然搜索不能正常工作。我试过玩引号,输入实际值而不是:-prefixed PDO变量,唯一摆脱错误的是删除%符号。我很茫然。
答案 0 :(得分:1)
LIKE
运算符采用字符串:
$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");
请注意,空:name
将匹配所有内容('%%'
)
Sqlite使用||
来连接字符串,因此'%' || :name || '%'
应该这样做。
另一种方式(取自this question)是将百分号添加到您的参数值。所以你有一个查询LIKE :name
,然后在绑定参数之前,添加百分号:$name = '%'.$name.'%'; $sth->execute(array('name' => $name));