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

时间:2013-10-29 07:13:23

标签: php sql sqlite pdo

以下行引发异常 -

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

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

取出%符号可以消除错误,但显然搜索不能正常工作。我试过玩引号,输入实际值而不是:-prefixed PDO变量,唯一摆脱错误的是删除%符号。我很茫然。

1 个答案:

答案 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));