1

簡単に言えば、検索クエリを作成していますが、このコードで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

WHERE句が2つあるため、SQLは無効です。

次のように変更します。

$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次のように、2番目を削除する(そしていくつかの括弧を追加する)必要があります。

$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クエリごとに1回だけ使用する必要があります。また、$ idは整数値であるため、ここで一重引用符を追加する必要はありません。

また、変数がどこから来ているのかはわかりませんが、mysql_real_escape_stringこのクエリに入れる前に、を使用して変数をエスケープすることをお勧めします。最後に、SELECT *ほとんどの場合間違いです。本当に必要な行だけを選択してください。それはあなたに少し時間を節約するでしょう:)

于 2012-05-07T18:42:49.880 に答える