如果我删除“和table.field ='$ filter'或table.field ='$ otherfilter'”,则下面的查询正常工作。如果我添加这部分,它会显示我无权查看的人的结果。我定义需要添加该部分,以便向我显示过滤结果。我如何构建它,以便使用以下方法显示正确的结果:和table.field ='$ filter'或table.field ='$ otherfilter'
代码:
//$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");
}
}
答案 0 :(得分:1)
试试AND (table.field = '$filter' OR table.field = '$otherfilter')
。请注意该子句的括号。我假设你已经混淆了代码并用“field”替换了实际的字段名称。
答案 1 :(得分:1)
您必须在过滤器周围放置括号:
AND (table.field = '$filter' OR table.field='$otherfilter')
否则你的逻辑就会关闭。
答案 2 :(得分:1)
你说{field是一个苹果 AND 字段是橙色的“table.field=$id AND table.field = $filter
。希望你只是懒得混淆你的表/字段名,但是如果你对这两个值使用相同的table.field组合,那么你要排除所有记录,因为单个记录字段中不能有多个值。一段时间。
答案 3 :(得分:1)
您可能正在处理and
和or
之间的优先级问题。尝试:
"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