2016-02-28 65 views
0

我的網站增加了產品標識的會話變量時,點擊產品頁面上的按鈕(稱爲「itemarray」數組)。當用戶打開自己的購物車,下面的代碼執行:如何用一個以上的SUM()創建一個mySQL語句?

<?php 
    $cart = implode(',', $_SESSION['itemarray']); 
    /*Create connection to DB here. DB connection is called $connection.*/ 
    $result = $connection->query("SELECT SUM(Price) AS Total_Price, SUM(Tax) AS Total_Tax, SUM(Shipping) AS Total_Shipping FROM STOCK_LIST WHERE Product_ID IN ($cart)"); 
    while ($rows = $result->fetch_assoc()) { 
     /*Output query result into table*/ 
    } 
    /*Terminate the connection to the database*/ 
    $connection->close(); 
?> 

的第一行代碼穿過itemarray並追加每個元素到逗號分隔的列表(稱爲$車)。與數據庫建立了連接(因爲它已經被測試,代碼已被刪除),並且提交了一個查詢,詢問$ cart中物品的總價格,稅金和運費。然後運行一個while循環,它將$ results變量的內容回顯到一個表格中(由於它已經被測試,代碼已被刪除)。

的問題是計算總計不被輸出。 implode函數按預期工作,正在建立連接,並且正在創建表(只是沒有查詢輸出),所以我只能假定查詢是問題。

+0

下面看看我的解決方案。基本上你需要更新你的implode代碼來用單引號包裝數據。 –

回答

0

我會強烈建議您使用綁定的參數,因爲它會保存從SQL注入攻擊你的網站(我認爲將是您的商店網站的關鍵)。嘗試採用此question的解決方案。

+0

一個比答案更適合評論的優秀點。甚至可能將這個問題標記爲你的鏈接。 – Terminus

+1

@Terminus如果它有一些代碼,這將是一個完美的答案,但我懶得寫它。然而,所描述的問題可以通過建議的鏈接來解決,問題實際上是關於不同的東西。如果我以這樣的態度判斷所有問題,我會標記其中幾乎一半:) – max

1

我改變了破滅命令:

$cart = implode('\', \'', $_SESSION['itemarray']); 

這使列表分爲以下格式:

1' ,「2

其中,1和2都產品ID。爲了將單引號添加到開始和結束的字符串,然後我說:

$cart = "'" . $cart . "'"; 

添加以下代碼第二行改變$車中的內容到這一點:

「1」 。 '2'

這現在可以在我的SQL語句中使用。

+0

這是偉大的:) –

相關問題