2009-08-15 4 views
2

は、私は、MySQLの結果を要求し、このようにそれらをループしてきた:あなたはおそらく何が起こるかを見ることができますMySQLの結果を簡単にループする方法は?

$query = "SELECT * FROM $table"; 
$result = mysql_query($query); 
for($i = 0; $i < mysql_num_rows($result); $i++){ 
    echo mysql_result($result, $i, $row); 
    //do something else; 
} 

。行が削除されたらどうなりますか?最初のアイテムがなくなったらどうなりますか?その場合、リストには30個のアイテムが存在する可能性がありますが、最後のアイテムのインデックスは50位にあります。これを修正するにはどうすればよいですか?

答えて

7
while($temp = mysql_fetch_assoc($result)) 
{ 
    echo $temp['id']; // ID Column 
} 

しかし、BTW。 mysql_num_rowsはフェッチした行数を返します。削除された行がある場合、それはフェッチされていないため、番号には数えません。

+1

mysql_fetch_assocのほかに、mysql_fetch_objectという主な機能があります。これは、stdClassクラスのオブジェクトを返す以外は同じように動作します。これは、mysql_fetch_assocがここにあったのと同じ方法でwhile()ループで使用できます。 –

+0

通常は while($ resultと$ temp = mysql_fetch_assoc($ result)) – snitch182

+0

$ temp = mysql_fetch_assoc($ result)を実行すると、ポインタは次のレコードに移動します。クエリの先頭にポインタをリセットする方法はありますか? –

1

また、クエリの実行時に行セット全体が取得され、クエリの実行後に削除された行は結果に表示されます。

関連する問題