2011-12-23 4 views
0

何らかの理由で、これはすべてを表示するのではなく、最後の結果を表示します。 SQLは、ワークベンチで動作し、$ルームメイトがエスケープされていますが、コードは、投稿の目的のためにトリミングされています:sqlのリクエストとwhileループの後に表示される結果は1つだけです

$sql = "SELECT CONCAT(clients.studentFirstName, ' ', clients.studentLastName) AS name, appointments.location, appointments.subLocation, appointments.startTime, appointments.endTime, appointments.date 
FROM appointments JOIN clients 
ON appointments.clientID = clients.clientID 
WHERE CONCAT(clients.studentFirstName, ' ', clients.studentLastName) = '".$roommate."';"; 

while ($row = mysql_fetch_array($result)) { 
    echo 
    '<table> 
     <tr> 
      <td>' 
       .$row["name"]. 
      '</td> 
      <td>' 
      .$row["location"]. 
      '</td> 
      <td>' 
       .$row["subLocation"]. 
      '</td> 
     </tr> 
     <tr> 
      <td>' 
       .$row["startTime"]. 
      ' - </td> 
      <td>' 
       .$row["endTime"]. 
      '</td> 
      <td>' 
       .$row["date"]. 
      '</td> 
     </tr> 
    </table>'; 

} 
+1

あなたの 'mysql_query()'呼び出しはどこですか?そして、そのような複数行HTMLを出力するには、[HEREDOC](http://php.net/heredoc)を使用してください。あなたがそれを見ても、複数行の文字列の連結は醜いです。 –

+0

私の呼び出しは実際のファイルにありますが、SQLは問題ではありません。ワークベンチで結果を取得しています...醜いフォーマットについて申し訳ありません、リソースのおかげで、私は今夜後で間違いなく読むでしょう – radleybobins

+0

Okあなたがちょうどクエリ呼び出しを含んでいなければ、それはうまくいきます。しかし、あなたが投稿したコードには本当に間違ったものはありません。したがって、1行しか出力しない場合、クエリは1行しか取得しません。フェッチされた人の数を見るには 'echo mysql_num_rows($ result)'を使います。 –

答えて

1

使用mysql_num_rows()は、クエリによって返された行の数を決定します。 1つの結果しか得られていないと報告した場合は、検索結果を取得するためにクエリを絞り込む必要があります。

whileループの前にmysql_fetch_*関数のいずれかを使用している場合は、カーソルが前進し、ループのwhileに1つ以上の結果が見つからないことがあります。そのような場合は、をwhileループの前に呼び出します。

+0

私は2つの結果を得ていますが、whileループから取り出すと、もう一方の結果だけが表示されます。 – radleybobins

+0

OK、追加の推測の提案で私の答えを更新しました。 – Trott

+0

大丈夫、今これを試してみます – radleybobins

関連する問題