2011-01-09 19 views
6

I tienen un conjunto de resultados me tire de una gran base de datos:¿Puedes reutilizar un conjunto de resultados mysql en PHP?

$result = mysql_query($sql); 

bucle I a través de este conjunto de registros una vez para tirar de bits específicos de datos y obtener promedios usando while($row = mysql_fetch_array($result)). Más adelante en la página, quiero recorrer nuevamente este mismo conjunto de registros y generar todo, pero debido a que utilicé el conjunto de registros anteriormente, mi segundo ciclo no devuelve nada.

Finalmente, me he metido en esto haciendo un bucle a través de un segundo juego de registros idéntico ($result2 = mysql_query($sql);), pero odio hacer la misma llamada SQL dos veces. ¿De alguna forma puedo recorrer el mismo conjunto de datos varias veces?

+0

¿Puede fusionar sus consultas en una? ¿Cuáles son estas consultas? – CrazyMax

+0

¿Por qué no almacena todas las filas en una matriz y la usa donde quiera? – zerkms

+0

También puede ser un truco pero puede intentarlo: "$ result1 = $ result = mysql_query ($ sql)". –

Respuesta

20

Uso:

mysql_data_seek($result, 0); 

a conseguir este "libre", puesto que ya está amortiguada.

Como nota aparte, puede realizar explícitamente una consulta sin búfer con mysql_unbuffered_query.

+0

Matt, esto funcionó como un encanto! Me salvaste un montón de tiempo de carga innecesario, gracias. – MarathonStudios

+0

@Col, ¿por qué debería copiarlo en una matriz cuando ya está ** amortiguado **? Si va a votar abajo, debe haber algo mal con la respuesta. "En su lugar, podría hacer una copia innecesaria" no califica. –

+0

@Col, estás haciendo muchas suposiciones. ¿Cómo sabes que está copiando todo en una matriz inicialmente? Dijo que solo necesitaba "bits específicos". ¿Seguirías haciendo que copiara todas las columnas si una era BLOB? También está asumiendo que cuando dice promedio, quiere decir una media aritmética directa. Puede ser ponderado. E incluso si tiene razón en que podría usar el 'AVG' de SQL, eso no responde la pregunta. –

0

Uso de SQL Cursors puede obtener este enfoque

+1

En realidad, OP no pregunta por los cursores. – zerkms

Cuestiones relacionadas