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 に答える