使用多个 AND 时在 PHP 中出现 MYSQL 语法错误


Having MYSQL Syntax error in PHP when using multiple AND

>我有这个SQL代码

$sql = 'SELECT * FROM images WHERE 
(artist LIKE "'.$artistsearch.'%") 
AND (code LIKE "'.$idsearch.'%") 
AND (name LIKE "'.$namesearch.'%") 
AND (price BETWEEN '.$minprice.' AND '.$maxprice.')';

我收到错误

无效查询:SQL 语法有误;请查看手册 与您的MySQL服务器版本相对应,语法正确 在第 5 行的"AND )"附近使用

但是,运行代码

SELECT * 
FROM images WHERE artist LIKE '%' 
AND code LIKE '%' 
AND name LIKE '%' 
AND price BETWEEN 0 AND 1000

在 MySQL 中工作正常。

我尝试切换'和",但它不起作用。

谁能帮我找出问题所在?

错误说明了最后一行中问题的所有

内容
AND (price BETWEEN '.$minprice.' AND '.$maxprice.')';

如您所见,"AND $maxprice )"部分是问题所在。检查$maxprice并确保它不为空

if (empty($maxprice)) {
   $maxprice = "some_default_number";
}
$sql = 'SELECT * FROM images WHERE 
   (artist LIKE "'.$artistsearch.'%") 
   AND (code LIKE "'.$idsearch.'%") 
   AND (name LIKE "'.$namesearch.'%") 
   AND (price BETWEEN '.$minprice.' AND '.$maxprice.')';