我有这个脚本:
$sql4='SELECT prod_name,description,price,in_stock,plat_name,genre_name FROM product WHERE prod_name LIKE %:prodname%';
$query5=$db->prepare($sql4);
$query5->execute(array(':prodname'=> $_GET['product']));
$result2=$query5->fetch(PDO::FETCH_ASSOC);
它给了我这个错误:
致命错误:未捕获的异常' PDOException' with message' SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MariaDB服务器版本相对应的手册,以获得正确的语法,以便在附近使用'%'%text'%'
我知道这些百分号是问题所在。如果我删除它们代码工作正常,但我如何让与这些符号一起工作?我需要它们,因为我想选择包含给定字符串的所有记录。
答案 0 :(得分:3)
您应该尝试编写如下代码:
$sql4='SELECT prod_name,description,price,in_stock,plat_name,genre_name FROM product WHERE prod_name LIKE :prodname';
$query5=$db->prepare($sql4);
$query5->execute(array(':prodname'=> '%'.$_GET['product'].'%'));
$result2=$query5->fetch(PDO::FETCH_ASSOC);
现在,PHP将正确地将查询格式化为".. like '%yourValue%'"
。
你看到了区别吗?
SELECT prod_name,description,price,in_stock,plat_name,genre_name FROM product WHERE prod_name LIKE '%'some text'%' -- (Wrong)
SELECT prod_name,description,price,in_stock,plat_name,genre_name FROM product WHERE prod_name LIKE '%some text%' -- (Correct!)