Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

$bdd = mysqli_connect(..., ..., ..., ...);
if($bdd->connect_errno){
    die('Erreur !');
}
$requete = $bdd->query('...');
var_dump($requete->fetch_array());
var_dump($requete->fetch_all(MYSQLI_ASSOC));

Le fetch_array fonctionne, mais php ne connait pas la fonction fetch_all

Ce que je veux

Pouvoir récupérer tous les résultats en un seul tableau

Ce que j'obtiens

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

Note: en local ca fonctionne, c'est sur le serveur que ça bug :/

Merci d'avance à tout le monde :)

11 réponses


Huggy
Réponse acceptée

ça doit être un problème de compilation de php (il manque --with-mysqli=mysqlnd)
en regardant dans phpinfo, j'ai les infos suivantes :
pour mysqli : Client API library version => mysqlind 5.0.12-dev - 20150407
pour mysqlInd : Api extensions => mysqli,pdo_mysql
On voit bien que mysqlInd est lié à mysqli
Maintenant à part changer de version de php je vois pas comment résoudre ton problème

bonjour,
peut être un indice par ici :
http://stackoverflow.com/questions/6694437/mysqli-fetch-all-not-a-valid-function

si ton serveur à une version php < 5.3 fetch_all n'est pas disponible. mysqli_result::fetch_all() devient dispo à partir de php 5.3, à condition d'être activée. Activée par défaut à partir de php 5.4. Utiliser fetch_assoc à la place.

Est-ce que ma réponse t'a été d'une aide quelquonque ?

AlexJM
Auteur

J'utilise la version 5.5 ou 5.6 je ne sais plus donc elle devrait normalement être activée. Selon la doc il faut le driver mysqlnd, il faut que je regarde si je l'ai
Merci d'avoir répondu ;)

@AlexJM, n'utilise pas mysqli, utilise plutôt PDO

AlexJM
Auteur

J'utilise en général PDO, mais sur la commande que j'ai actuellement, on a demandé que j'utilise mysqli

Voici un tableau de comparaison fourni par Oracle ici
Pour les opérations courantes, les 2 apis se valent mais mysqli est plus complet sur les opérations pointues et c'est pour cela qu'il est utilisé par phpmyadmin.
On peut voir dans la tableau que mysqli propose des opérations asynchrones ... si qqun a un retour, ça m'intéresse

Si tu ne fais que le fetch_all (que tu retire le fetch_array avant) cela marche ?

AlexJM
Auteur

Non même si le fetch_all est seul, cela ne fonctionne pas :/

AlexJM
Auteur

Des petites nouvelles. J'ai mamp pro sur mac, cela fonctionne parfaitement. Sur mamp pro sur windows, cela ne fonctionne plus. Les fonctions de mysqli qui ont besoin de mysqlnd ne fonctionnent pas alors que celui ci est activé : https://gyazo.com/2432bbe149eebfa1cef6c6ae028ce6a3
Si quelqu'un savait ce qui se passe...

AlexJM
Auteur

Ah oui dans Api extension, je n'ai que pdo_mysql
Bon bah je vais essayer de changer de version alors..
Merci de ta réponse ;)