使用";%时PHP PDO准备引发异常&引用;
下面的行抛出一个异常-使用";%时PHP PDO准备引发异常&引用;,php,sql,sqlite,pdo,Php,Sql,Sqlite,Pdo,下面的行抛出一个异常- $sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%"); 致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:1靠近“%”:语法错误 去掉%符号可以消除错误,但显然搜索没有按我所希望的那样工作。我尝试过使用引号,输入一个实际值,而不是带:-前缀的PDO变量,唯一能消除错误的是删除%符号。我不知所措。像这样的操作符获取一个字符串: $
$sth = $db->prepare("SELECT * FROM providers WHERE name LIKE %:name%");
致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[HY000]:一般错误:1靠近“%”:语法错误
去掉%符号可以消除错误,但显然搜索没有按我所希望的那样工作。我尝试过使用引号,输入一个实际值,而不是带:-前缀的PDO变量,唯一能消除错误的是删除%符号。我不知所措。像这样的
操作符获取一个字符串:
$db->prepare("SELECT * FROM providers WHERE name LIKE '%' + :name + '%'");
请注意,空的:name
将匹配所有内容('%%'
)
Sqlite使用| |
连接字符串,因此'%'| |:name |'%'
应该可以
另一种方法(取自)是将百分号添加到参数的值中。因此,您需要一个查询,比如:name
,然后在绑定参数之前,添加百分号:$name='%'。$name'%'$sth->execute(数组('name'=>$name))代码>@RoyalBg,这对我一点帮助都没有。我的参数直接来自$\u帖子,修改它似乎不是一个好的解决方案。Knittl在查询中用引号括起%符号并将它们与| |连接起来的答案正是我需要的答案。你一开始没有提到:)谢谢!这成功了!实际上,我想说这可能是我迄今为止对stackoverflow的最好体验。几个小时后,我的头撞在桌子上,在发帖后的头两分钟内得到一个可行的答案。如果不是让我等了15分钟才被允许检查你的答案为“已接受”就好了。