PHP Australia Conference 2015

mysqli_result::fetch_all

mysqli_fetch_all

(PHP 5 >= 5.3.0)

mysqli_result::fetch_all -- mysqli_fetch_allLit toutes les lignes de résultats dans un tableau

Description

Style orienté objet

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

Style procédural

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

mysqli_fetch_all() lit tous les résultats et retourne le résultat sous forme d'un tableau associatif, numérique, ou les deux.

Liste de paramètres

result

Style procédural uniquement : Un identifiant de jeu de résultats retourné par la fonction mysqli_query(), mysqli_store_result() ou mysqli_use_result().

resulttype

Ce paramètre optionnel est une constante, qui indique le type de tableau qui doit être produit à partir du résultat. Les valeurs possibles sont les constantes MYSQLI_ASSOC, MYSQLI_NUM, ou MYSQLI_BOTH.

Valeurs de retour

Retourne un tableau associatif ou numérique contenant les lignes de résultat.

Driver MySQL Natif uniquement

Disponible uniquement avec mysqlnd.

Vu que la fonction mysqli_fetch_all() retourne toutes les lignes dans un tableau en une seule fois, elle peut consommer plus de mémoire que des fonctions comme mysqli_fetch_array(), qui ne font que récupérer une ligne à la fois depuis le jeu de résultats. Par la suite, si vous devez parcourir le jeu de résultats, vous devez construire une boucle qui aura un impact sur les performances. C'est pour cette raison que la fonction mysqli_fetch_all() ne doit être utilisée que dans ce genre de situation où le résultat récupéré doit être envoyé vers une autre interface pour être analysé.

Voir aussi

  • mysqli_fetch_array() - Retourne une ligne de résultat sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
  • mysqli_query() - Exécute une requête sur la base de données

add a note add a note

User Contributed Notes 4 notes

up
0
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.

<?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;
        }
?>
up
0
andrey at php dot net
4 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.
up
-4
windix at gmail dot com
4 years ago
If you get an empty set after calling fetch_all(), make sure the result set cursor is reset to the beginning
up
-10
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
To Top