Impossible de recuperer resultat d'un SELECT

apprenti-webmaster -  
 apprenti-webmaster -
Bonjour à tous,

je conçois une page php en me connectant à une BdD mysql.
lorsque je recupere les champs de la table en utilisant le code suivant :

61		 $result=mysql_query(" SELECT * FROM `table` ");
62		 $row="toto";	
63		 while($row = mysql_fetch_row($result) ) 
64               {


tout semble bien marcher.
mais voila, quand il y a beaucoup de champs dans la table (en occurence: plusieurs dizaines de milliers - pres de 90 000 pour etre plus precis) l'erreur suivante est affiché:


Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 15 bytes) in /home/ . . . /pageweb.php on line 63


l'erreur persiste même quand j'utilise mysql_fecth_array($result) plutot!!
et la table doit contenir tous ces champs.
quelqu'un peut-il connaitre un moyen de resoudre ce probleme??

merci d'avance pour votre aide!
A voir également:

1 réponse

macgawel Messages postés 676 Statut Membre 89
 
Bonjour.

Comme le dit le message d'erreur, tu dépasses la limite de la mémoire allouée à php (32 Mo).

Solutions :
1. Augmenter la mémoire allouée à php.
Pas forcément évident : les fournisseurs de site la brident, et même sur un serveur dédié, il n'y a pas forcément beaucoup plus de mémoire disponible.

2. revoir tes procédures.
Rassure-moi, tu n'affiche pas tes 90 000 lignes sur une seule page ? Parce que si c'est le cas, tu dois obtenir un truc illisible.
Donc, limite le nombre d'enregistrements, soit en affinant la requête, soit en utilisant un système de pagination et le paramètres de requête LIMIT debut,nombre.
0
apprenti-webmaster
 
MERCI!!! ça a l'air de mieux marcher maintenant!

mais j'ai un maintenant un nouveau probleme: lorsque j'ecris le code suivant:

75    sql0 = 'SELECT COUNT (*) FROM `table` WHERE `Champ`="Contenu"';
76    $result0=mysql_query($sql0); 
77    $row0 = mysql_fetch_row($result0);
78    $nombre = $row0['0'];


pour compter le nombre de lignes contenant la chaine indiquée, le message d'erreur suivant s'affiche:


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/ . . . /pageweb.php on line 77


et le nombre n'est meme pas recuperé! j'espere que c'est pas trop demander!! merci encore d'avance pour toute aide!
0
macgawel Messages postés 676 Statut Membre 89 > apprenti-webmaster
 
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home/ . . . /pageweb.php on line 77
Ce code d'erreur indique (dans 99% des cas) une requête SQL erronée.

Essaie avec
$result0=mysql_query($sql0) or die ("Erreur de requête :".$sqlI0."<br />".mysql_error());

Au moins, ça devait te préciser où est l'erreur...
0
apprenti-webmaster > macgawel Messages postés 676 Statut Membre
 
MERCI!! vraiment merci!

j'ai pu voir où l'erreur se trouvait, en fait il fallait que j'ecrive:

$sql0 = 'SELECT COUNT( * ) FROM `table` WHERE `Champ`="Contenu" ';


au lieu de:

$sql0 = 'SELECT COUNT (*) FROM `table` WHERE `Champ`="Contenu" ';


encore mille fois merci!
0