2011-01-09 12 views
6

Ho un set di risultati tiro da un database di grandi dimensioni:Riesci a riutilizzare un set di risultati mysql in PHP?

$result = mysql_query($sql); 

I ciclo attraverso questo set di record una volta a tirare bit specifici di dati e ottenere le medie usando while($row = mysql_fetch_array($result)). Più tardi nella pagina, voglio collegare attraverso questo stesso set di record di nuovo e di uscita tutto - ma perché ho usato il set di record precedente, il mio secondo ciclo restituisce nulla.

Infine, ho risolto il problema eseguendo il looping di un secondo recordset identico ($result2 = mysql_query($sql);), ma detesto fare la stessa chiamata SQL due volte. In qualsiasi modo posso scorrere lo stesso set di dati più volte?

+0

Puoi unire le vostre domande in uno? Quali sono queste domande? – CrazyMax

+0

Perché non memorizzare tutte le righe in un array e utilizzarlo dove vuoi? – zerkms

+0

La sua può anche essere un hack, ma si può provare questo: "$ result1 = $ risultato = mysql_query ($ sql)". –

risposta

20

Usa:

mysql_data_seek($result, 0); 

si ottiene questo "libero", dal momento che è già tamponata.

Come nota a parte, si può fare in modo esplicito una query unbuffered con mysql_unbuffered_query.

+0

Matt, questo ha funzionato come un fascino! Mi hai salvato un sacco di tempo di caricamento non necessario, grazie. – MarathonStudios

+0

@Col, perché dovrebbe copiarlo su un array quando è ** già bufferizzato **? Se hai intenzione di votare, dovrebbe esserci qualcosa di sbagliato nella risposta. "Potresti fare una copia inutile invece" non si qualifica. –

+0

@ Col, stai facendo un sacco di ipotesi. Come fai a sapere che sta copiando tutto su un array inizialmente? Disse che aveva solo bisogno di "pezzi specifici". Lo avresti ancora copiare tutte le colonne se uno era un BLOB? Supponi anche che quando dice "media" intenda una media aritmetica diretta. Potrebbe essere ponderato. E anche se hai ragione che potrebbe usare l''AVG' di SQL, questo non risponde alla domanda. –

0

Utilizzo di SQL Cursors è possibile ottenere questo approccio

+1

cursori In realtà non è quello che ha chiesto OP circa. – zerkms

Problemi correlati