下面的查询工作正确,如果我删除"和表。field='$ filter'或table.field='$otherfilter'"。如果我添加这部分,然后它显示我的结果,我没有授权看到的人。我当然需要添加那部分,这样它就会显示过滤后的结果。我如何构建这个,使它显示我正确的结果使用:和表。field = '$filter'或表。场= ' 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");
}
}
尝试AND (table.field = '$filter' OR table.field = '$otherfilter')
。注意子句周围的括号。我假设您已经混淆了代码,并将实际字段名称替换为"field"。
你必须用圆括号括住你的过滤器:
AND (table.field = '$filter' OR table.field='$otherfilter')
你说"字段是一个苹果和字段是一个橘子"与table.field=$id AND table.field = $filter
。希望这只是你懒得混淆你的表/字段名,但如果你使用相同的表。
您可能正在处理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