2011-01-09 29 views
6

Sonuç kümesini büyük bir veritabanından alıyorum:PHP'de bir mysql sonucunu yeniden kullanabilir misiniz?

$result = mysql_query($sql); 

Belirli bir veri parçasını çekmek ve while($row = mysql_fetch_array($result)) kullanarak ortalamaları almak için bir kez bu kayıt kümesinde dönüyorum. Daha sonra sayfada, aynı kayıt kümesini tekrar tekrar açmak ve her şeyi vermek istiyorum - ama daha önce kayıt kümesini kullandığım için ikinci döngüm hiçbir şey döndürmedi.

Sonunda ikinci bir benzer kayıt kümesiyle ($result2 = mysql_query($sql);) döngü yaparak bunu hackledim, ancak aynı SQL çağrısını iki kez yapmaktan nefret ediyorum. Herhangi bir şekilde aynı veri kümesini birden çok kez kullanabilir miyim?

+0

Sorgularınızı tek bir şekilde birleştirir misiniz? Bu sorgular nelerdir? – CrazyMax

+0

Neden tüm satırları bir dizide saklamıyor ve istediğiniz yerde kullanıyorsunuz? – zerkms

+0

Ayrıca bir kesmek olabilir ama bunu deneyebilirsiniz: "$ result1 = $ result = mysql_query ($ sql)". –

cevap

20

kullanın alabilirsiniz Cursors SQL kullanarak: Zaten tamponlu beri

mysql_data_seek($result, 0); 

Sen, bu "özgür" olsun.

Ayrı bir not olarak, mysql_unbuffered_query ile engellenmemiş bir sorguyu açıkça yapabilirsiniz.

+0

Matt, bu bir cazibe gibi çalıştı! Beni gereksiz yüklerden kurtardın, teşekkürler. – MarathonStudios

+0

@Col, niçin ** zaten arabelleğe alınmış ** bir diziye kopyalamalı? Aşağı oya düşecekseniz, cevabın yanlış bir yanı olmalı. "Bunun yerine gereksiz kopyalamayı yapabilirsin" yeterliliği yok. –

+0

@Col, çok fazla varsayım yapıyorsunuz. Tüm bunları başlangıçta bir diziye kopyaladığını nereden biliyorsun? Sadece "belirli bitlere" ihtiyacı olduğunu söyledi. Hala bir BLOB olsaydı, bütün sütunları kopyalasın mı? Aynı zamanda ortalama bir düz aritmetik ortalama anlamına geldiği zaman söylediğinizi varsayıyorsunuz. Ağırlıklı olabilir. Ve SQL'in 'AVG'sini kullanabileceği konusunda haklı olsanız bile, bu soruya cevap vermiyor. –

0

Eğer bu yaklaşım

+1

Gerçekten de imleçler OP'nin sorduğu şey değil. – zerkms

İlgili konular