mysqli_result::fetch_all

mysqli_fetch_all

(PHP 5 >= 5.3.0)

mysqli_result::fetch_all -- mysqli_fetch_allFetches all result rows as an associative array, a numeric array, or both

Description

Object oriented style

mixed mysqli_result::fetch_all ([ int $resulttype = MYSQLI_NUM ] )

Procedural style

mixed mysqli_fetch_all ( mysqli_result $result [, int $resulttype = MYSQLI_NUM ] )

mysqli_fetch_all() fetches all result rows and returns the result set as an associative array, a numeric array, or both.

Parameters

result

Procedural style only: A result set identifier returned by mysqli_query(), mysqli_store_result() or mysqli_use_result().

resulttype

This optional parameter is a constant indicating what type of array should be produced from the current row data. The possible values for this parameter are the constants MYSQLI_ASSOC, MYSQLI_NUM, or MYSQLI_BOTH.

Return Values

Returns an array of associative or numeric arrays holding result rows.

MySQL Native Driver Only

Available only with mysqlnd.

As mysqli_fetch_all() returns all the rows as an array in a single step, it may consume more memory than some similar functions such as mysqli_fetch_array(), which only returns one row at a time from the result set. Further, if you need to iterate over the result set, you will need a looping construct that will further impact performance. For these reasons mysqli_fetch_all() should only be used in those situations where the fetched result set will be sent to another layer for processing.

See Also

Коментарии

Return value changed in 5.3.3 - between 5.3.0 and 5.3.2 (incl.) when the result set was empty NULL was returned. 5.3.3+ returns an empty array.
Also, mysqli_fetch_all works only for buffered result sets, which are the default for mysqli_query. MYSQLI_USE_RESULT will be supported in 5.3.4+
However, it makes little sense to use it this way, materialising unbuffered sets. In this case choose STORE_RESULT, and fetch_all won't copy the data, but reference it, as it is stored already in mysqlnd.
2010-08-10 10:38:19
http://php5.kiev.ua/manual/ru/mysqli-result.fetch-all.html
If you really need this function, you can just extend the mysqli_result class with a function like this one.

<?php
       
public function fetch_all($resulttype MYSQLI_NUM)
        {
            if (
method_exists('mysqli_result''fetch_all')) # Compatibility layer with PHP < 5.3
               
$res parent::fetch_all($resulttype);
            else
                for (
$res = array(); $tmp $this->fetch_array($resulttype);) $res[] = $tmp;

            return 
$res;
        }
?>
2012-03-20 12:27:48
http://php5.kiev.ua/manual/ru/mysqli-result.fetch-all.html
I tested using "fetch all" versus "while / fetch array" and :

fetch-all uses less memory (but not for so much).

In my case (test1 and test2): 147008,262848 bytes (fetch-all) versus 147112,262888 bytes (fetch-array & while.

So, about the memory, in both cases are the same.

However, about the performance
My test takes :350ms (worst case) using fetch-all, while it takes 464ms (worst case) using fetch-array, or about 35% worst using fetch array and a while cycle.

So, using fetch-all, for a normal code that returns a moderate amount of information is :
a) cleaner (a single line of code)
b) uses less memory (about 0.01% less)
c) faster.

php 5.6 32bits, windows 8.1 64bits
2015-02-09 04:26:37
http://php5.kiev.ua/manual/ru/mysqli-result.fetch-all.html
By the way, this case pretty work's too:

$services = $mysqli->query("SELECT * FROM table1");

if($services && $services->num_rows>0){
    $services->fetch_all(MYSQLI_ASSOC);
}

foreach($services as $service){
    echo $service; //work properly, cause it implements Iterator 
}

That's mean in this case $services is a valid array (or empty array)
2019-05-22 14:39:44
http://php5.kiev.ua/manual/ru/mysqli-result.fetch-all.html
be careful fetch_all(MYSQLI_ASSOC ) returns an array in the form
<?php
array(=> array(...row...), => array(...row...) .... ), even if is one row...
?>
not compared to fetch_assoc() which returns one array of the result in form:
<?php
array(...row...)
?>
2023-10-03 04:15:48
http://php5.kiev.ua/manual/ru/mysqli-result.fetch-all.html

    Поддержать сайт на родительском проекте КГБ