Mysql_fetch_array add all rows?

How can you add all rows from mysql_query to mysql_fetch_array ()? I want to be able to do this as efficiently as possible, as it can work with multiple rows.

+3
source share
2 answers

The most common way:

$rows = array();

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

as shown in the examples in the documentation.

+15
source
<?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 options

$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

against.

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:)

+10
source

Source: https://habr.com/ru/post/1784451/


All Articles