通过验证搜索查询

时间:2012-05-07 18:22:11

标签: php mysql

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

此代码工作正常,但我需要将此验证添加到其中,当我添加此验证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'的情况下工作正常,但是当我添加验证脚本时,它会丢失。

2 个答案:

答案 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 *几乎总是一个错误:只选择你真正需要的行。那会节省你一点时间:)。