PHP - Çok mysql_query ("SELECT ..") ..?

2 Cevap php

Hey, ben bir e-alışveriş yapıyorum ve ben 150'den fazla tek bir sayfada mysql_query("SELECT ..."); sorgular gibi yapılan fiyatları onların çoklu varyasyonları ile kategoriler ve tüm ürünlerin ağacını görüntülemek için. (I "ise" döngüler sayarsak).

Çok sayıda, ve evet, eğer herhangi bir olumsuz etkisi olabilir? (Ofc. bu verileri yüklemek için daha uzun sürer ..)

Ayrıca ben zaten o şekilde yapmadan bu kodun etkisini elde edebilirsiniz?

$result2 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result3 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result4 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");
$result5 = mysql_query("SELECT * FROM ceny WHERE produkt_id='$id' ORDER BY gramaz");

while( $row2 = mysql_fetch_array( $result2 )) { }
while( $row3 = mysql_fetch_array( $result2 )) { }
while( $row4 = mysql_fetch_array( $result2 )) { }
while( $row5 = mysql_fetch_array( $result2 )) { }

Teşekkürler, Mike.

2 Cevap

Bu çalıştırmak sorgu sayısını azaltmak için genellikle iyi bir fikirdir. Bu durumda, örneğin, tek bir sorguda tüm ürünler için satır seçebilirsiniz:

SELECT * FROM ceny WHERE produkt_id IN (?, ?, ?, ...) ORDER BY gramaz

Sonra sonuçlar üzerinde dolaşır ve uygun değişken (ler) doldurur bir tek döngü olacaktır:

$ceny = array()
while ($row = mysql_fetch_array($result)) {
    $id = $row['produkt_id'];
    $ceny[$id][] = $row;
}

Şimdi $ceny[$produkt_id] gramaz olanlar bu ürün için ceny satırların bir listesini içerir.

Bu durum katılmak muhtaç görünüyor, ve belki bazı AJAX gerçekten bu sayfa için yük azaltmak istiyorsanız.

Seni doğru anlama ediyorsam, kategorilere bir ağaç menüsünü görüntülemek istiyorsanız, ve belirli bir şube açmak için tıkladığınızda muhtemelen, doğru, bu kategoriye giren öğeleri görmek?

Yani, mevcut yaklaşım, doğru ürün tablosundan * seçkin onlara göstermek için ne zaman, kategoriler döngü nedir?

Bu durumda, ve ben doğru anlamak ediyorsam, bu basit bir birleştirme kullanarak çözülebilir. Sen kategoriye göre sıralamak sonra, öğeleri tabloya tek bir select deyimi do you öğeleri tabloya sahip yabancı anahtar kategoriler masaya katılmak isterim.

Şimdi, kategorileri ve ilişkili öğeleri hem de gösterecek şekilde ayarlanmış tek bir sonuç döngü mümkün olurdu.