How can you add all the rows from a mysql_query to a mysql_fetch_array()? I want to be able to do it as efficiently as possible as it could be working with quite a few rows.
2 Answers
The most common way:
$rows = array();
while(($row = mysql_fetch_array($result))) {
$rows[] = $row;
}
1 Comment
thirtydot
I couldn't bring myself to write this answer.
<?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 some runtime stats
$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
vs.
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
interesting :)
3 Comments
thirtydot
A better answer, if only because it avoids a "relatively slow" PHP
while loop, which could matter slightly if there are 5 zillion rows.thirtydot
Your +1 is from me, ..interesting.
Jon Black
lol - just a shame you're not the questioner asking about efficiency :P
while ($row = mysql_fetch_assoc($result)) { echo $row['id']; }?