2011-01-09 16 views
6

Mam zestaw wyników I wyciągnąć z dużej bazy danych:Czy możesz ponownie użyć zestawu wyników mysql w PHP?

$result = mysql_query($sql); 

I pętli przez ten rekordów raz, aby wyciągnąć konkretne bitów danych i uzyskać średnie używając while($row = mysql_fetch_array($result)). Później na stronie chcę ponownie przechodzić przez ten sam zestaw rekordów i wyprowadzać wszystko - ale ponieważ wcześniej użyłem zestawu rekordów, moja druga pętla nic nie zwraca.

W końcu włamałem się do tego poprzez zapętlenie drugiego identycznego zestawu rekordów ($result2 = mysql_query($sql);), ale nie znoszę wykonać tego samego dwukrotnego wywołania SQL. W jaki sposób mogę wielokrotnie przechodzić przez ten sam zestaw danych?

+0

Czy możesz połączyć swoje zapytania w jednym? Jakie są te zapytania? – CrazyMax

+0

Dlaczego nie przechowywać wszystkich wierszy w tablicy i używać go w dowolnym miejscu? – zerkms

+0

Może to być również hack, ale możesz spróbować: "$ result1 = $ result = mysql_query ($ sql)". –

Odpowiedz

20

przeznaczenie:

mysql_data_seek($result, 0); 

dostać ten "wolny", ponieważ jest on już buforowane.

Jako oddzielną notatkę można jawnie wykonać niebuforowane zapytanie z numerem mysql_unbuffered_query.

+0

Matt, działało to jak czar! Uratowałeś mi mnóstwo niepotrzebnego czasu ładowania, dziękuję. – MarathonStudios

+0

@Col, dlaczego powinien skopiować go do tablicy, gdy jest ** już buforowany **? Jeśli zamierzasz przeprowadzić głosowanie w dół, odpowiedź powinna być zła. "Zamiast tego można zrobić niepotrzebne kopiowanie" nie kwalifikuje się. –

+0

@ Col, robisz wiele założeń. Skąd wiesz, że na początku kopiuje to wszystko do tablicy? Powiedział, że potrzebuje tylko "konkretnych bitów". Czy nadal miałbyś skopiować wszystkie kolumny, jeśli byłby to BLOB? Zakładasz też, że kiedy mówi, że średnia to prosta, średnia arytmetyczna. Może być ważona. I nawet jeśli masz rację, że mógłby użyć "AVG" SQL, który nie odpowiada na pytanie. –

0

Korzystanie z SQL Cursors można uzyskać to podejście

+1

W rzeczywistości kursory nie są tym, o co pytano OP. – zerkms

Powiązane problemy