如何防止单词在“echo”命令中重复?

时间:2012-05-16 03:58:26

标签: php while-loop left-join echo

我有这种奇怪的情况,我第一次遇到这种情况,并且我在PHP中的新状态更令人困惑。在下面的查询中,“ask 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"; 
  }
}

1 个答案:

答案 0 :(得分:1)

令人惊讶的是,只有"问"正在重复......""似乎更有可能。你得到了一堆不包含$ reason或$ person的行,所以PHP打印出文字文本并省略变量。如果是这样的话,你可以通过做这样的事情来解决这个问题:

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

如果修复它,您仍应该处理查询中的更大问题。它显然不太对劲。没有更多的背景,很难说你应该如何解决它。我猜你需要抛弃DISTINCT并实现GROUP BY子句。