如何使用多个SUM()创建mySQL语句?

时间:2016-02-28 18:07:01

标签: php mysql

当在产品页面上单击按钮时,我的网站会将产品标识符添加到会话变量(名为“itemarray”的数组)中。当用户打开购物车时,执行以下代码:

<?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)中。与数据库建立连接(已删除代码,因为它已经过测试),并提交了一个查询,询问$ cart中商品的总价格,税金和运费。然后运行while循环,它将$ results变量的内容回显到一个表中(因为它已经过测试,代码已被删除)。

问题是计算的总数没有输出。 implode函数按预期工作,正在建立连接,并且正在创建表(只是没有查询的输出),所以我只能假设查询是问题。

2 个答案:

答案 0 :(得分:1)

我将implode命令更改为:

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

这会将列表放入以下格式:

  

1','2

其中1和2都是产品ID。为了将单引号添加到字符串的开头和结尾,我添加了:

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

添加第二行代码会将$ cart的内容更改为:

  

'1'。 '2'

现在可以在我的SQL语句中使用它。

答案 1 :(得分:0)

我强烈建议您使用绑定参数,因为它会使您的站点免于SQL注入攻击(我认为这对您的商店站点至关重要)。尝试采用此question的解决方案。