mysql_fetch_assoc() が2回目以降うごかなくなった話

mysql_fetch_assoc() で $result の中身を取得しようとしたとこハマったのでメモ。
動かそうとしたコードは以下

 



// 中略(データベース接続確立とか)

$result = mysql_query('SELECT * FROM fugafugaTable');
if (!$result) {
die('SELECTクエリーが失敗しました。' . mysql_error());
}

$dataCount = 0;

while ($row = mysql_fetch_assoc($result)) {
$dataCount++;
}

while ($row = mysql_fetch_assoc($result)) {
// hogehoge
}

 

mysql_fetch_assoc() + while で回す前に、どのくらいの配列になるか
見てから回す必要があり上記のようなコードになりました。
しかし、これが動きませんでした。

なんでも mysql_fetch_assoc をつかうと mysql カウンタが回ってしまい
これを戻さなければいけないのだとか。

mysql_data_seek() をつかうことで解決しました。



// 中略(データベース接続確立とか)

$result = mysql_query('SELECT * FROM fugafugaTable');
if (!$result) {
die('SELECTクエリーが失敗しました。' . mysql_error());
}

$dataCount = 0;

while ($row = mysql_fetch_assoc($result)) {
$dataCount++;
}

// mysql_fetch_assoc を再度利用するために Mysqlカウンタを戻す
mysql_data_seek($result, 0);

while ($row = mysql_fetch_assoc($result)) {
// hogehoge
}

 

これでOK。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です