【发布时间】:2019-06-21 16:35:11
【问题描述】:
我仍然是学习 MySQL 工作原理和 PhP 的新手,我一直在尝试将我的 Array 值作为会话的一部分输入 MySQL 数据库,但我不知道如何或我做错了什么。我无法让查询从函数 checkouttodatabase() 中的数组中获取某些值。
我尝试了多个关于将会话数组发布到 MySQL 数据库中的教程和帖子,但无济于事。这似乎是“功能”,但不会将项目名称添加到数据库中,而是放下“数组”和值“0”
//将项目添加到数组中
if (isset($_POST["add_to_cart"])) {
if (isset($_SESSION["shopping_cart"])) {
$item_array_id = array_column($_SESSION["shopping_cart"], "item_id");
if (!in_array($_GET["id"], $item_array_id)) {
$count = count($_SESSION["shopping_cart"]);
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_price' => $_POST["hidden_price"],
'item_quantity' => $_POST["quantity"]
);
array_push($_SESSION['shopping_cart'], $item_array);
} else {
echo '<script>alert("Item Already Added")</script>';
echo '<script>window.location="shoppingcart.php"</script>';
}
} else {
$item_array = array(
'item_id' => $_GET["id"],
'item_name' => $_POST["hidden_name"],
'item_price' => $_POST["hidden_price"],
'item_quantity' => $_POST["quantity"]
);
$_SESSION["shopping_cart"][0] = $item_array;
}
}
//获取数组值并添加到数据库的函数
function checkouttodatabase() {
$connect = mysqli_connect("localhost", "root", "", "precisionmice");
mysqli_select_db($connect, 'precisionmice');
foreach($_SESSION['shopping_cart'] as $row => $id){
$sql="INSERT INTO orders (product, quantity, totalprice)
VALUES ('item_id','item_quantity','item_price')";
}
if(mysqli_query($connect, $sql)){
echo "Betaling bevestigen";
header("refresh:2; url=checkout.php");
} else {
echo "Update mislukt";
}
}
当播放器被重定向到一个单独的网页时,函数 checkouttodatabase() 被调用。现在我想要的结果是让我们说有两个项目添加到购物车数组中。对于添加的每个项目,我希望它将变量发送到 MYSQL 数据库。除了我也在为总价而奋斗。我想这样做,以便将数量乘以添加到 MYSQL 列 total_price 中的单个 item_price。
例如: 提交时的数据库结果:
Item_id:产品名称 1,Item_quantity:3,Total_price:45.00$
Item_id:产品名称 2,Item_quantity:1,Total_price:15.00$
【问题讨论】:
-
您将像
'item_id'这样的静态值作为字符串插入。而是将其定义为?,?,?并使用bind_param设置值。 -
为什么每次都建立相同的字符串
$sql,而只插入最后一次出现到数据库中?为什么不在该查询中使用变量?