1

我第一次遇到这种奇怪的情况,并且考虑到我在 PHP 中的新状态,它更加令人困惑。在下面的查询中,“asked by”一词的重复次数超出了应有的次数。它重复的次数与我猜它不应该显示的条目数量有关。

代码:

$sql = "SELECT DISTINCT 
          allowed_permissions.post_id, 
          client_visit.client_reason, 
          accounts.full_name, 
          client_visit.type 
        from allowed_permissions 
          LEFT JOIN 
            client_visit 
              on allowed_permissions.post_id = client_visit.visit_id 
          LEFT JOIN 
            accounts 
              ON client_visit.system_id = accounts.system_id 
        where    
          allowed_permissions.allowed_to_view = '$uid'";

$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) {

} elseif($rows > 0) {
  while($row = mysql_fetch_assoc($query)) {
    $reason = $row['client_reason'];
    $person = $row['full_name'];
    //Here the asked word gets repeated...
    echo"$reason asked by $person"; 
  }
}
4

1 回答 1

1

令人惊讶的是,只有“询问”会被重复……“询问”似乎更有可能。您会得到一堆不包含 $reason 或 $person 的行,因此 PHP 打印出文字文本并省略了变量。如果是这种情况,您可以通过执行以下操作来解决它:

if ( ! empty( $reason ) && ! empty( $person ) ) {
    echo $reason . ' asked by ' . $person;
}

如果这样可以解决它,您仍然应该处理查询中的更大问题。这显然不太对。如果没有更多的上下文,很难说你应该如何解决它。我猜你需要放弃 DISTINCT 并实现一个 GROUP BY 子句。

于 2012-05-16T04:22:41.897 回答