0

このスクリプトでは、基本的に、特定の行レコードがブラウザーのアドレスバーの名前と一致したときに、mysqlテーブルからデータをエコーアウトしたいと思います。しかし、何らかの理由で、データはエコーされません。whileループが機能しない理由は何ですか?

 $users = $_GET['username'];



$other_friend_query = mysql_query("SELECT * FROM friend WHERE RelatingUser='$users'");
$other_friend_assoc = mysql_fetch_assoc($other_friend_query);


while ($other_friend_assoc = mysql_fetch_assoc($other_friend_query)) {
    $friend_related = $other_friend_assoc['RelatedUser'];
      echo $friend_related;




  }
4

2 に答える 2

3

これは、ループのmysql_fetch_assoc前に呼び出すためです。whileこれを呼び出すと、結果がフェッチされます。次に、ループに移動すると、その結果は既にフェッチされています。それを取り除くだけで、準備完了です。コメントで述べたように、mysql_関数の使用を停止します。以下のコードは、投稿された変数をエスケープし、エラーもチェックします。の代わりに列リストを使用することもお勧めしますSELECT *

$users = mysql_real_escape_string($_GET['username']);

$other_friend_query = mysql_query("SELECT * FROM friend WHERE RelatingUser='$users'") or die( mysql_error() );

while( $other_friend_assoc = mysql_fetch_assoc($other_friend_query) ) {
    $friend_related = $other_friend_assoc['RelatedUser'];
    echo $friend_related;
}
于 2012-12-10T22:12:55.333 に答える
1

while ループが機能しない理由はありますか?

唯一の理由ではないかもしれませんが、最初の結果をスキップしています。

// the following line is unused and therefore unnecessary
$other_friend_assoc = mysql_fetch_assoc($other_friend_query);

while ($other_friend_assoc = mysql_fetch_assoc($other_friend_query)) {
于 2012-12-10T22:13:19.573 に答える