2012-05-16 33 views
1

我有这种奇怪的情况,我第一次遇到,并给予我在PHP中的新地位,它更令人困惑。在下面的查询中,“请求者”这个词重复的次数比它应该多。它重复的次数与它猜想的假设数量有关。如何防止在“回声”命令中重复出现的单词?

代码:

$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"; 
    } 
} 
+3

你在while循环中有“问”这个词,那么问题是什么? – Anas

+1

向我们显示您的输出和您的预期输出。当你在mysql中运行查询时,它是否会产生预期的结果? – Jrod

+0

看到,distinct将不会返回不同的'client_reason,full_name'集合,而是它将返回查询 – Imdad

回答

1

让人吃惊的是,只有“问道”是越来越重复......“通过问”就显得更容易。您会得到一堆不包含$ reason或$ person的行,因此PHP将打印出文本文本并忽略这些变量。如果是这样的话,你可以得到它周围做这样的事情:

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

问题能否解决,你还是应该处理查询中的更大的问题。这显然不完全正确。很难说如何在没有更多上下文的情况下修复它。我猜你需要抛弃DISTINCT并实现一个GROUP BY子句。

+0

我的错误我的意思是要求。 – ariel

+0

工程就像一个魅力的家伙!谢谢 – ariel