Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么此查询会忽略筛选器?_Php_Sorting_Filter - Fatal编程技术网

Php 为什么此查询会忽略筛选器?

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";

如果删除“and table.field='$filter'或table.field='$otherfilter',下面的查询将正常工作。如果我添加了这个部分,那么它会显示我无权查看的人的结果。我确实需要添加该部分,以便显示过滤结果。我如何构造它,以便使用以下命令显示正确的结果:and 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");
 }

 }

尝试
和(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=''有趣的是,它在其他地方正常工作,但不冒险。在我使用它之前,将您的建议添加到所有内容中。有趣的是,它在其他地方正常工作,但不会冒险。在我使用这个之前,将你的建议添加到所有内容中。