1

很快,我正在创建搜索查询,但遇到了一个问题……使用此代码。

此代码运行良好,但我需要向其中添加此验证,当我添加此验证时出现问题 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'它的情况下工作正常,但是当我添加该验证脚本时,它就死了。

4

2 回答 2

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”语句括起来)

于 2012-05-07T18:42:24.140 回答
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 *几乎总是一个错误:只选择你真正需要的行。这将为您节省一些时间:)

于 2012-05-07T18:42:49.880 回答