2012-05-10 72 views
0

我有一個產品類,當實例化時,從「產品」表中獲取數據,它還會在其中創建一個「類別」對象(產品 - >類別),從類別表中獲取數據。我的問題是,當列出同一類別的多個產品時會發生什麼情況,因爲它們來自同一類別,所以會創建多個相同的查詢以創建類別對象。如何解決這個問題?PHP:一遍又一遍地做同樣的查詢?

+2

顯示您的代碼。 – debianek

回答

2

使用您的SQL JOIN:

SELECT * 
FROM product 
LEFT JOIN category ON product.category_id = category.id; 
1

使用工廠,創建的對象,並在構造函數中傳遞產品/類別提供該選項的數據。工廠加載將列出的所有產品的數據,比實例化產品對象,提供已獲取的數據

2

您必須構建一個截取和/或緩存查詢的圖層。當它看到你正在請求具有某個ID的類別時,它應該從它的緩存中提供該類別,如果它不在那裏,它應該檢索並緩存它,所以在請求期間不會查詢同一行不止一次。

手動操作是no-go,只需選擇一個體面的ORM即可爲您做到這一點。

0

在執行sql查詢的循環內不是很好的做法。

您可以做的是將產品表與類別表左鍵連接。

$select = SELECT * 
FROM product 
LEFT JOIN category ON product.category_id = category.id; 

然後執行查詢,然後進行分類您的產品進入類別的基礎 一樣可以運行循環

$result = mysql_query($select); 
while($data = mysql_fetch_assoc($result)){ 

    $product_info['product_name'] = $data['product_name']; 
    $product_info['price'] = $data['product_price']; 

    $product[$data['category']][$data['product_id']] = $product_info; 
} 

這個循環會做的魔力,它會幫助你進行分類的產品在同一類別下降。 而且您可以更有效地顯示數據。

相關問題