此代码工作正常,但我需要将此验证添加到其中,当我添加此验证userid='$id'
时出现问题,搜索查询无法使用它。有人可以让我走正确的路吗?我在这里遗漏了一些东西。 $ id的值肯定是真的。这是此搜索查询的整个代码部分,结果没有验证即可。
else if($_POST['filter1'] == "po_boravistu")
{
if($row_12['admin_id'] < 1)
{
//FILTER 10 po boravištu
$sqlCommand = "SELECT * FROM albums WHERE userid='$id' AND WHERE bor_mjesto LIKE '%$searchquery%' OR bor_kucni_broj LIKE '%$searchquery%' OR
bor_postanski_broj LIKE '%$searchquery%' OR bor_ulica LIKE '%$searchquery%' OR bor_opcina LIKE '%$searchquery%'";
}
}
整个脚本在没有userid='$id'
的情况下工作正常,但是当我添加验证脚本时,它会丢失。
答案 0 :(得分:3)
您的SQL无效,因为您有2个WHERE子句。
将其更改为:
$sqlCommand = "SELECT * FROM albums WHERE userid='$id' AND (bor_mjesto LIKE %$searchquery%' OR bor_kucni_broj LIKE '%$searchquery%' OR bor_postanski_broj LIKE '%$searchquery%' OR bor_ulica LIKE '%$searchquery%' OR bor_opcina LIKE '%$searchquery%')";
(注意使用括号括起多个“OR”语句)
答案 1 :(得分:2)
您需要删除第二个WHERE
(并添加一些括号),如下所示:
$sqlCommand = "
SELECT *
FROM
albums
WHERE
userid='$id'
AND
(
bor_mjesto LIKE '%$searchquery%' OR
bor_kucni_broj LIKE '%$searchquery%' OR
bor_postanski_broj LIKE '%$searchquery%' OR
bor_ulica LIKE '%$searchquery%' OR
bor_opcina LIKE '%$searchquery%'
)
";
每个查询只需使用WHERE
一次。此外,您不需要在这里添加$ id周围的单引号,因为它是一个整数值。
此外,我不确定您的变量来自哪里,但您可能希望在将它们放入此查询之前使用mysql_real_escape_string
来转义它们。最后,SELECT *
几乎总是一个错误:只选择你真正需要的行。那会节省你一点时间:)。