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