2011-10-25 10 views
0

"およびtable.field = '$ filter'またはtable.field = '$ otherfilter'"を削除すると、以下のクエリが正しく動作します。私はこの部分を追加すると、私は見ることが許可されていない人々のための結果を示しています。私は間違いなくその部分を追加して、フィルタリングされた結果を表示する必要があります。このクエリでフィルタが無視されるのはなぜですか?

コード 'otherfilter $' とtable.field = '$フィルタOR' table.field =::私はそれが私の正しい使用して結果を示し、これを構造化するにはどうすればよい

//$filter = "23943409" 
    $filter2 = "$username"; 


    $sql = "SELECT table.field, table2.field, table.field, table.field, 
    table.field, table.field, table.field FROM table 
    LEFT JOIN table2 ON table.field = table2.field 
    WHERE table.field='$id' and table.field='$id' 
    and table.field = '$filter' OR table.field='$otherfilter' 
    ORDER BY table.id DESC LIMIT 0, 3"; 

    $result=mysql_query($sql); 

    $query = mysql_query($sql) or die ("Error: ".mysql_error()); 

    if ($result == "") 
    { 
    echo ""; 
    } 
    echo ""; 


    $rows = mysql_num_rows($result); 

    if($rows == 0) 
    { 
    print(""); 

} 
elseif($rows > 0) 
{ 
while($row = mysql_fetch_array($query)) 
{ 

$field = $row['field']; 

print("$field"); 
} 

} 
+1

あなたは$ filterをコメントアウトしました。この変数は空です。したがって、あなたのクエリは次のようになります。table.field = '' – bart

答えて

1

AND (table.field = '$filter' OR table.field = '$otherfilter')を試してみてください。節のまわりの括弧に注意してください。あなたがコードを難読化し、実際のフィールド名を "フィールド"に置き換えたと仮定しています。あなたは、フィルタの周りに括弧を配置する必要があり

+0

面白いのは、他の場所では正しく動作しますが、チャンスを取らないことです。 evertyhwereにあなたの提案を追加する私はこれを使用します。 – AAA

1

AND (table.field = '$filter' OR table.field='$otherfilter') 

そうでなければ、あなたのロジックがオフになっています。

1

「フィールドはアップルフィールドはオレンジです」と言っているのは、table.field=$id AND table.field = $filterです。うまくいけば、テーブル/フィールド名を難読化するだけで怠け者になってしまいますが、これらの2つの値に対して同じtable.fieldコンボを使用している場合は、1つのレコードフィールドに複数の値を入れることはできません時間。

+0

は難読化しています。 – AAA

1

おそらく、andorの間の優先順位の問題を処理しています。試してください:

"SELECT table.field, table2.field, table.field, table.field, 
    table.field, table.field, table.field FROM table 
    LEFT JOIN table2 ON table.field = table2.field 
    WHERE table.field='$id' and table.field='$id' 
    and (table.field = '$filter' OR table.field='$otherfilter') 
    ORDER BY table.id DESC LIMIT 0, 3 
関連する問題