Comment faire pour récupérer toutes en assoc tableau à partir d'une requête préparée?
J'essaie ce code:
if ($result = $this->mysqli->prepare("SELECT * FROM `mytable` WHERE `rows1`=?"))
{
$result->bind_param("i",$id);
$result->execute();
while ($data = $result->fetch_assoc())
{
$statistic[] = $data;
}
echo "<pre>";
var_dump($statistic);
echo "</pre>";
}
mais c'est jeter l'erreur suivante
[Fri 15 Jun 12:13:11 2012] [error] [client 127.0.0.1] PHP Fatal error:
Appel à la méthode non mysqli_stmt::fetch_assoc () [myfile.php]
Et aussi j'ai essayé:
if ($result = $this->mysqli->prepare("SELECT * FROM `mytable` WHERE `rows1`=?"))
{
$result->bind_param("i",$id);
$rows = $result->execute();
while ($data = $rows->fetch_assoc())
{
$statistic[] = $data;
}
echo "<pre>";
var_dump($statistic);
echo "</pre>";
}
qui rend ce:
[Fri 15 Jun 12:22:59 2012] [error] [client 127.0.0.1] PHP Fatal error:
Appel à une fonction membre fetch_assoc() sur un non-objet dans
[myfile.php]
Ce que je peux faire pour obtenir un résultat ou ce que je fais de mal? J'ai besoin de l'assoc tableau de DB à la recherche comme $data[0]["id"] = 1
OriginalL'auteur AquaVita | 2012-06-15
Vous devez vous connecter pour publier un commentaire.
En fait, vous peut de faire cela assez facilement, vous ne pouvez pas le faire avec le
mysqli_stmt
objet, vous devez extraire les sous-jacentsmysqli_result
, vous pouvez le faire en appelant simplementmysqli_stmt::get_result()
. Note: ceci nécessite de mysqlnd (Pilote Natif MySQL) extension qui peut ne pas toujours être disponible.Toutefois, le point au-dessous de recommander des AOP sur MySQLi est toujours debout, et c'est un excellent exemple de pourquoi: la MySQLi utilisateur de l'API n'a pas de sens. Il m'a fallu plusieurs années de façon intermittente de travail avec MySQLi pour moi de découvrir le mécanisme décrit ci-dessus. Maintenant, je vais vous avouer que la séparation de l'état et de définir les concepts ne font sens, mais dans ce cas pourquoi une déclaration
fetch()
méthode? De la nourriture pour la pensée (si vous êtes toujours assis sur la barrière entre MySQLi et PDO).Pour être complet, voici un exemple de code basé (vaguement) sur le code d'origine dans la question:
Ne devrait-elle pas être
$result = $stmt->get_result()
?->get_result()
EST le bon moyen de récupérer les données.édité. Pas sûr de savoir comment ce est restée mal depuis si longtemps, évidemment, j'ai raté la notification pour le premier commentaire, et personne n'a pris la peine de modifier le correctif dans la réponse 🙁
OH PINAISE! J'aurais pu le modifier moi - même complètement oublié. Toutes mes excuses, et un grand travail :D.
OriginalL'auteur DaveRandom
Que vous pouvez faire:
$data
contient tous les résultats dans une assoc tableau.*Il convient de noter que cette
mysqli_fetch_all()
fonction ne fonctionne qu'avec lamysqlnd
paquet.http://php.net/manual/en/mysqli-result.fetch-all.php
*Il convient de noter que cette mysqli_fetch_all() ne fonctionne qu'avec la mysqlnd paquet. php.net/manual/en/mysqli-result.fetch-all.php
OriginalL'auteur manoj
n'a pas essayé, mais changer votre boucle while condition avec la suivante et de nouveau le test de
$data = $result->fetch()
grâce
OriginalL'auteur Khurram
La méthode execute() retourne TRUE ou FALSE pas à un ensemble de résultats et en tant que tel, le fetch_assoc méthode ne peut pas être utilisé, car il n'existe pas sur les booléens. Ce que vous avez besoin est
Si vous le souhaitez, je peux vous envoyer un exemple de code.
Espérons que cette aide.
OriginalL'auteur profnotime
C'est juste un exemple:
OriginalL'auteur Zoltán Jámbor