3

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.

3
  • I don't understand what you want to do. Please clarify your question. Do you want to sum certain row values? Commented Jan 10, 2011 at 3:01
  • What's wrong with the standard while ($row = mysql_fetch_assoc($result)) { echo $row['id']; }? Commented Jan 10, 2011 at 3:03
  • Nope, just create a nested array with a mysql_query(). I guess mysql_fetch_array() only gets one row, and I need to get all of them. Commented Jan 10, 2011 at 3:03

2 Answers 2

15

The most common way:

$rows = array();

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

as shown in the examples in the documentation.

Sign up to request clarification or add additional context in comments.

1 Comment

I couldn't bring myself to write this answer.
11
<?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

A better answer, if only because it avoids a "relatively slow" PHP while loop, which could matter slightly if there are 5 zillion rows.
Your +1 is from me, ..interesting.
lol - just a shame you're not the questioner asking about efficiency :P

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.