以下行引发异常 -
$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");
致命错误:未捕获的异常 'PDOException' 带有消息 'SQLSTATE[HY000]:一般错误:1 在“%”附近:语法错误'
去掉 % 符号可以消除错误,但显然搜索无法按我的意愿工作。我尝试使用引号,输入一个实际值而不是 :-prefixed PDO 变量,唯一摆脱错误的方法是删除 % 符号。我不知所措。
LIKE
运算符接受一个字符串:
$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");
请注意,空白:name
将匹配所有内容 ( '%%'
)
Sqlite 用于||
连接字符串,'%' || :name || '%'
应该这样做。
另一种方法(取自这个问题)是将百分号添加到参数的值中。所以你会有一个查询LIKE :name
,然后在绑定参数之前,添加百分号:$name = '%'.$name.'%'; $sth->execute(array('name' => $name));