(PHP 5 >= 5.3.0)

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


Stile orientato agli oggetti

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

Stile procedurale

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.

Elenco dei parametri


Solo nello stile procedurale: un identificatore di resultset restituito da mysqli_query(), mysqli_store_result() o mysqli_use_result().


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.

Valori restituiti

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

solo Driver Nativo MySQL

Disponibile solo con 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.

Vedere anche:

add a note add a note

User Contributed Notes 4 notes

m dot amiot at otak-arts dot com
2 years ago
If you really need this function, you can just extend the mysqli_result class with a function like this one.

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);
                for (
$res = array(); $tmp = $this->fetch_array($resulttype);) $res[] = $tmp;

andrey at php dot net
3 years ago
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.
kevin at metalaxe dot com
5 years ago
If you are getting the following error:

Fatal error: Call to undefined method mysqli_result::fetch_all()

Be sure you didn't miss this line after the procedural call about it requiring mysqlnd
windix at gmail dot com
3 years ago
If you get an empty set after calling fetch_all(), make sure the result set cursor is reset to the beginning
To Top