PHP + MySQLについて質問です。

3件づつデータを取得するために以下のSQLを実行しました。
SELECT * FROM $mysql_table ORDER BY date LIMIT 0,3
mysql_fetch_rowを利用して変数展開を行ったのですが、最初の1件のみしか取得できません。
3件分のデータを取得できると思ったのですが、何か勘違いしているのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/09/04 12:16:49
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:mosgreen No.2

回答回数85ベストアンサー獲得回数6

ポイント100pt

手元の環境ではこんな感じで期待通りに動いてます。

mysql_fetch_rowは先にも説明されている方がいらっしゃいますように、レコードを1行分しか取得できないので、whileか何かでループを回してやると良いかと思います。

<?php

$hostname = "localhost";
$uname = "USERNAME";
$upass = "PASSWORD";
$dbname = "DBNAME";
$tblname = "TABLENAME";

//MySQL に接続する。
if( !$res_dbcon = mysql_connect( $hostname, $uname, $upass) ){
	print "MYSQL への接続に失敗しました。";
	exit;
}

mysql_select_db( $dbname, $res_dbcon );
$res_result = mysql_query( "SELECT * from {$tblname} order by date limit 0,3", $res_dbcon );

//結果を表示
while( $row = mysql_fetch_row( $res_result ) ){

	var_dump( $row );
	echo "<br>\n";
}

mysql_close( $res_dbcon );

?>
id:koujirou6218

ありがとうございます!

phpMyadminでは表示されるのになんでだろう?と思ってました。

2008/09/04 12:16:27

その他の回答1件)

id:idetky No.1

回答回数426ベストアンサー獲得回数20

mysql_fetch_row()では、指定した結果 ID が指す結果から「 1 行分」のデータしか取得してくれません。

以上です。

id:koujirou6218

それは知っていますが、mysql_fetch_arrayでも同じ結果です。

2008/09/04 11:17:43
id:mosgreen No.2

回答回数85ベストアンサー獲得回数6ここでベストアンサー

ポイント100pt

手元の環境ではこんな感じで期待通りに動いてます。

mysql_fetch_rowは先にも説明されている方がいらっしゃいますように、レコードを1行分しか取得できないので、whileか何かでループを回してやると良いかと思います。

<?php

$hostname = "localhost";
$uname = "USERNAME";
$upass = "PASSWORD";
$dbname = "DBNAME";
$tblname = "TABLENAME";

//MySQL に接続する。
if( !$res_dbcon = mysql_connect( $hostname, $uname, $upass) ){
	print "MYSQL への接続に失敗しました。";
	exit;
}

mysql_select_db( $dbname, $res_dbcon );
$res_result = mysql_query( "SELECT * from {$tblname} order by date limit 0,3", $res_dbcon );

//結果を表示
while( $row = mysql_fetch_row( $res_result ) ){

	var_dump( $row );
	echo "<br>\n";
}

mysql_close( $res_dbcon );

?>
id:koujirou6218

ありがとうございます!

phpMyadminでは表示されるのになんでだろう?と思ってました。

2008/09/04 12:16:27
  • id:b-wind
    LIMIT を付けずに同じことをするとどうなりますか?
  • id:koujirou6218
    b-windさん
    おっと、LIMITを外しても同じ結果ですね。
    もしかしてWhileか何かでループさせないといけないのでしょうか。
    ポイントを差し上げたいので、適当に回答していただけますか?
  • id:idetky
    うーむ。なるほど。ループで回さなくては行けないことを指摘する必要がありましたか。

    コメントを読めば

    > もしかしてWhileか何かでループさせないといけないのでしょうか。

    とちゃんと書いてありましたね。

    失礼しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません