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_assoc dans une boucle, éventuellement avec MYSQLI_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()