PHP PDO 在使用 “%” 时准备抛出异常


PHP PDO prepare throwing exception when using "%"

以下行抛出异常 -

$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));