2011-01-10 5 views
3

mysql_queryからmysql_fetch_array()にすべての行を追加するにはどうしたらいいですか?かなりの数の行で作業できるので、できるだけ効率的にやりたいと思っています。mysql_fetch_arrayすべての行を追加しますか?

+0

私はあなたがしたいことを理解していません。あなたの質問を明確にしてください。特定の行の値を合計しますか? –

+0

標準の 'while($ row = mysql_fetch_assoc($ result)){echo $ row ['id']; } '? – thirtydot

+0

いいえ、mysql_query()でネストされた配列を作成してください。 mysql_fetch_array()は1行しか取得できないと思うので、それらをすべて取得する必要があります。 –

答えて

15

最も一般的な方法:

$rows = array(); 

while(($row = mysql_fetch_array($result))) { 
    $rows[] = $row; 
} 

as shown in the examples in the documentation.

+3

私は自分自身でこの答えを書くことができませんでした。 – thirtydot

+0

標準的な方法がありますか?さて、私は知っている、感謝フェリックス! –

+0

@thirtydot:Sry;)あなたがそれを書いたければ、私は私を削除します... –

10
<?php 

$db = new mysqli("localhost", "foo_dbo", "pass", "foo_db", 3306); 

$startTime = microtime(true); 

$result = $db->query("select * from users"); 

$users = $result->fetch_all(MYSQLI_ASSOC); // faster 

// while($row = $result->fetch_assoc()) $users[] = $row; //slower 

echo sprintf("%d users fetched in %s secs", 
    count($users), number_format(microtime(true) - $startTime, 6, ".", "")); 

$db->close(); 

?> 

EDITいくつかの実行時の統計

$users = $result->fetch_all() 

    1000 users fetched in 0.001462 secs 
    5000 users fetched in 0.005493 secs 
15000 users fetched in 0.015517 secs 
50000 users fetched in 0.051950 secs 
100000 users fetched in 0.103647 secs 

while($row = $result->fetch_assoc()) $users[] = $row; 

    1000 users fetched in 0.001945 secs 
    5000 users fetched in 0.008101 secs 
15000 users fetched in 0.023481 secs 
50000 users fetched in 0.081441 secs 
100000 users fetched in 0.163282 secs 

興味深い:

+1

より良い答えは、 "比較的遅い" PHPの 'while'ループ。5行の行があれば少し問題になります。 – thirtydot

+0

あなたの+1は私のものです。興味深いです。 – thirtydot

+0

lol - ちょっと恥ずかしがり屋あなたは効率について質問しているわけではない:P –

関連する問題