Php 为什么此查询会忽略筛选器?
如果删除“and table.field='$filter'或table.field='$otherfilter',下面的查询将正常工作。如果我添加了这个部分,那么它会显示我无权查看的人的结果。我确实需要添加该部分,以便显示过滤结果。我如何构造它,以便使用以下命令显示正确的结果:and table.field='$filter'或table.field='$otherfilter' 代码:Php 为什么此查询会忽略筛选器?,php,sorting,filter,Php,Sorting,Filter,如果删除“and table.field='$filter'或table.field='$otherfilter',下面的查询将正常工作。如果我添加了这个部分,那么它会显示我无权查看的人的结果。我确实需要添加该部分,以便显示过滤结果。我如何构造它,以便使用以下命令显示正确的结果:and table.field='$filter'或table.field='$otherfilter' 代码: //$filter = "23943409" $filter2 = "$username";
//$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");
}
}
尝试
和(table.field='$filter'或table.field='$otherfilter')
。注意该子句周围的括号。我假设您已经混淆了代码并将实际字段名替换为“field”。尝试和(table.field='$filter'或table.field='$otherfilter')
。注意该子句周围的括号。我假设您已经混淆了代码,并将实际字段名替换为“field”。您必须在过滤器周围加上括号:
AND (table.field = '$filter' OR table.field='$otherfilter')
否则,您的逻辑将关闭。您必须在过滤器周围放置括号:
AND (table.field = '$filter' OR table.field='$otherfilter')
否则,您的逻辑将被关闭。您正在用
表表示“field是一个苹果,field是一个橙色”。field=$id和table.field=$filter
。希望这只是因为你懒得混淆你的表/字段名,但是如果你对这两个值使用同一个table.field组合,那么你就排除了所有记录,因为一个记录字段一次不能有多个值。你说的是“字段是苹果,字段是橙色”使用table.field=$id和table.field=$filter
。希望这只是因为您在混淆表/字段名时懒惰,但是如果您对这两个值使用相同的table.field组合,然后排除所有记录,因为单个记录字段一次不能有多个值。您可能正在处理和和或之间的优先级问题。尝试:
"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
您可能正在处理和
和或
之间的优先级问题。尝试:
"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
您注释掉了$filter,因此该变量为空。因此,您的查询变成:and table.field=''您注释掉了$filter,所以这个变量是空的。因此,您的查询变成:and table.field=''有趣的是,它在其他地方正常工作,但不冒险。在我使用它之前,将您的建议添加到所有内容中。有趣的是,它在其他地方正常工作,但不会冒险。在我使用这个之前,将你的建议添加到所有内容中。