2013-03-08 93 views
0

林新的論壇,但希望有人能夠給我一個手IM掙扎..PHP輸出查詢

我的代碼如下,我出口從Zen Cart的數據庫CSV文件

$products_cost = 
    "select p.products_id, pd.products_name, p.products_quantity, ". 
     "p.products_cost, (p.products_quantity*p.products_cost) AS products_total_cost, ". 
     "p.products_type ". 
    "from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd ". 
    "where p.products_id = pd.products_id and pd.language_id='" . $_SESSION['languages_id'] . "' ". 
    "order by (p.products_cost) DESC, p.products_cost desc, pd.products_name"; 

    $products_stock = $db->Execute($products_cost); 

//Start Of Output for Stock File 

$output = array();  
$output["tx_type"]='ST';   
$output["Stock_Code"]= $products_stock->fields['products_id']; 
$output["Qty"]= $products_stock->fields['products_quantity']; 
$output["Description"]= $products_stock->fields['products_name']; 
$output["CostPriceEx"]= $products_stock->fields['products_cost']; 
$output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity']; 

zen_sages_fwrite($output); 

$stimer = microtime_float(); 

運行代碼時,我得到如下的輸出,但不顯示數據庫中的每個產品,它顯示的是相同的?

ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 
ST,1149,10,350gsm A6 Glossy Postcards,290.0000,2900 

我曾嘗試加入$products_stock->MoveNext();

但dosent縫有任何影響,

感謝大家提前

羅素

我的代碼現在看起來像

//開始輸出聖ock文件

$output = array(); while (!$products_stock->EOF) { 


$output["tx_type"]='ST'; 


$output["Stock_Code"]= $products_stock->fields['products_id']; 


$output["Qty"]= $products_stock->fields['products_quantity']; 


$output["Description"]= $products_stock->fields['products_name']; 


$output["CostPriceEx"]= $products_stock->fields['products_cost']; 


$output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity']; 

$ products_stock-> MoveNext;

} 

zen_sages_fwrite($ output);

$ stimer = microtime_float();

+0

您使用的PDO?這只是做一個,因爲你只取一行。根據資源類型'$ products_stock'的不同,您需要創建一個循環,它會遍歷每一行,隨時寫入(或保存爲一次寫入)。另外,作爲一個附註,您已經計算了查詢中的總成本,爲什麼再次使用PHP進行計算而不是使用數據庫中的字段? – Jon 2013-03-08 16:27:46

+0

嗨,jon,謝謝你的回覆,我不知道PDO是什麼?如何創建這個循環?我的經驗是相當有限的。我應該有,並且會提前修改謝謝。 – 2013-03-08 16:35:52

+0

在你的'$ output = array()'的開頭添加'while(!$ products_stock-> EOF){'並且關閉while在''''fwrite'後加上'}',但是在那之前,加上'$ products_stock-> MoveNext;' – Jon 2013-03-08 16:41:53

回答

0

在回答形式把這樣你就可以得到它的工作更快^^ 你想要的東西,如:

while(!$products_sock->EOF) { 
    $output = array();  
    $output["tx_type"]='ST';   
    $output["Stock_Code"]= $products_stock->fields['products_id']; 
    $output["Qty"]= $products_stock->fields['products_quantity']; 
    $output["Description"]= $products_stock->fields['products_name']; 
    $output["CostPriceEx"]= $products_stock->fields['products_cost']; 
    $output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity']; 

    zen_sages_fwrite($output); 
    $products_stock->MoveNext(); 
} 

隨着您在上面添加,您覆蓋$output與每一個循環的代碼,這會寫它的每一個循環然後覆蓋它。

或者試試:

for($i=0;$i<$products_stock->rowCount();$i++) { 
    $output = array();  
    $output["tx_type"]='ST';   
    $output["Stock_Code"]= $products_stock->fields['products_id']; 
    $output["Qty"]= $products_stock->fields['products_quantity']; 
    $output["Description"]= $products_stock->fields['products_name']; 
    $output["CostPriceEx"]= $products_stock->fields['products_cost']; 
    $output["TotalCostEx"]= $products_stock->fields['products_cost'] * $products_stock->fields['products_quantity']; 

    zen_sages_fwrite($output); 
    $products_stock->MoveNext(); 
} 
+0

HI Jon,這就完成了它,但是在顯示我們所有的產品後循環沒有結束 – 2013-03-08 16:59:06

+0

當你說出來時它會發生什麼不結束? – Jon 2013-03-08 17:00:07

+0

它列出了最後一個產品數千次.. – 2013-03-08 17:03:12