2010-01-27 3 views
1

J'ai une requête de base de données typique:Disparaître les tableaux générés avec mysql_fetch_array() après utilisation?

$query = mysql_query('SELECT titulo,referencia FROM cursos WHERE tipo=1 AND estado=1'); 

et je peux le convertir dans un tableau et imprimer les données:

while ($results=mysql_fetch_array($query)): ?> 
echo $results['referencia']; 
// and so... 
endwhile; 

mais dans certains cas, je dois imprimer les mêmes données dans une autre partie de la page Web, mais le tableau $ results semble être vide (j'utilise var_dump($results) et je reçois bool(false)). Je prévois d'utiliser ce que j'ai appris en lisant Create PHP array from MySQL column, mais pas censé mysql_fetch_array() crée un tableau? Alors, que se passe-t-il?

+0

Etes-vous sûr que votre requête est correcte et renvoie les résultats? –

+0

Ouais, la première fois que je fais la requête, les données sont imprimées. – Tae

Répondre

2

Tae, la raison pour laquelle votre $result est false à la fin de la boucle while est que mysql_fetch_array retours false quand il atteint la fin de l'ensemble de la requête. (Voir le PHP Docs sur le sujet) Lorsque vous atteignez la fin de l'ensemble de requêtes, $results est défini sur false et la boucle while est fermée. Si vous souhaitez enregistrer les tableaux (résultats de la ligne de la base de données) pour plus tard, faites comme Chacha102 suggère et stocke chaque ligne lorsqu'elle est extraite de la base de données.

$data = array(); 
while($results = mysql_fetch_array($query)) { 
    $data[] = $results; 
} 
foreach ($data as $result_row) { 
    echo $result_row['referencia']; 
    ... etc. 
} 
1

Essayez cette

while($results = mysql_fetch_array($query)) 
{ 
    $data[] = $results; 
} 

Maintenant, tous vos résultats sont en $data, et vous pouvez faire ce que vous voulez à partir de là. Comme l'a dit Anthony, vous voudrez peut-être vous assurer que les données sont réellement extraites de la requête. Comme l'a dit Anthony. Vérifiez si les résultats sont retournés par echo mysql_num_rows($query). Cela devrait vous donner le nombre de lignes que vous avez

+0

Merci Chacha102, c'est la méthode que j'ai supposé être utilisée et je vais l'essayer, mais je me demande toujours pourquoi les tableaux générés par 'mysql_fetch_array()' semblent disparaître. – Tae

Questions connexes