以下行抛出异常 -
$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");
致命错误:未捕获的异常"PDOException",消息为"SQLSTATE[HY000]:常规错误:1 靠近"%":语法错误
取出%标志可以消除错误,但显然搜索没有像我想要的那样工作。 我尝试玩弄引号,输入实际值而不是 :-前缀的 PDO 变量,唯一摆脱错误的方法是删除 % 符号。 我不知所措。
LIKE
运算符采用字符串:
$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");
请注意,空:name
将匹配所有内容('%%'
)
Sqlite使用||
来连接字符串,所以'%' || :name || '%'
应该这样做。
另一种方法(取自这个问题)是将百分号添加到参数的值中。因此,您将有一个查询LIKE :name
,然后在绑定参数之前,添加百分号:$name = '%'.$name.'%'; $sth->execute(array('name' => $name));