我对学习MySQL的工作原理和PhP还是很陌生,我一直在尝试将Array值作为MySQL数据库会话的一部分,但是我不知道该怎么做或做错了什么。我无法在查询checkouttodatabase()中获取从数组中获取某些值的查询。
我曾尝试过多个教程和帖子,内容涉及将会话数组发布到MySQL数据库中,但无济于事。这似乎是“功能”,但没有将项目名称添加到数据库中,而是放下“ Array”和值“ 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()函数。现在,我希望得到的结果是,让我们说在shoppingcart数组中添加了两个项目。对于添加的每个项目,我希望将变量发送到MYSQL数据库。除了我还为总价而奋斗。我想这样做,以便数量乘以在MYSQL列total_price中添加的单个item_price。
例如: 提交时的数据库结果:
商品ID:商品名称1,商品数量:3,总价:45.00 $
商品ID:产品名称2,商品数量:1,总价:15.00 $
答案 0 :(得分:0)
在此代码示例中,有几件事要讨论,但是要解决将数组放入数据库的问题,@ tadman在上面的注释中为您提供了答案。编写SQL语句时,不能像对待字符串一样对待数组。您需要改为使用数组的各个元素。
如果您真的想将整个数组保存到MySQL数据库表的单个字段中,则必须以某种方式对数组进行序列化,例如,使用json_encode()
。但是,通常不应该在没有令人信服的理由的情况下将多个值填充到单个数据库列中。