当在产品页面上单击按钮时,我的网站会将产品标识符添加到会话变量(名为“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函数按预期工作,正在建立连接,并且正在创建表(只是没有查询的输出),所以我只能假设查询是问题。
答案 0 :(得分:1)
我将implode命令更改为:
$cart = implode('\', \'', $_SESSION['itemarray']);
这会将列表放入以下格式:
1','2
其中1和2都是产品ID。为了将单引号添加到字符串的开头和结尾,我添加了:
$cart = "'" . $cart . "'";
添加第二行代码会将$ cart的内容更改为:
'1'。 '2'
现在可以在我的SQL语句中使用它。
答案 1 :(得分:0)
我强烈建议您使用绑定参数,因为它会使您的站点免于SQL注入攻击(我认为这对您的商店站点至关重要)。尝试采用此question的解决方案。