mysqli_fetch_all
mysqli_fetch_all($result, $mode = MYSQLI_NUM)
Renvoie toutes les lignes (restantes) du résultat sous forme de tableau de lignes. Attention au mode par défaut MYSQLI_NUM – les lignes sont des tableaux à indices numériques. Avec les noms de colonnes, c’est MYSQLI_ASSOC. Un résultat vide renvoie un tableau vide.
Paramètres
- $result – un objet mysqli_result.
- $mode –
MYSQLI_NUM(par défaut),MYSQLI_ASSOC,MYSQLI_BOTH.
Exemples
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = mysqli_connect("localhost", "user", "password", "shop");
mysqli_set_charset($db, "utf8mb4");
$r = mysqli_query($db, "SELECT name, price FROM products WHERE stock > 0 ORDER BY id");
$products = mysqli_fetch_all($r, MYSQLI_ASSOC);
echo count($products); // 2
echo json_encode($products, JSON_UNESCAPED_UNICODE); // [{"name":"Pain au levain","price":"89.00"},{"name":"Brioche","price":"3.00"}]
// seulement les noms, en tableau simple
$r = mysqli_query($db, "SELECT name FROM products ORDER BY id");
echo implode(", ", array_column(mysqli_fetch_all($r), 0)); // Pain au levain, Brioche, Gâteau au pavot
Points d’attention
- Toutes les lignes sont en mémoire en même temps – pour des listes de dizaines de milliers de lignes, il est plus économe de parcourir le résultat ligne par ligne (
mysqli_fetch_assocdans une boucle, éventuellement avecMYSQLI_USE_RESULT). - La fonction a besoin du pilote mysqlnd – PHP l’inclut par défaut.
Fonctions associées :
mysqli_fetch_assoc()
mysqli_query()
array_column()
json_encode()