如何将 php 数组值发布到 mysql 表中

Posted

技术标签:

【中文标题】如何将 php 数组值发布到 mysql 表中【英文标题】:How can I post php array values into mysql table 【发布时间】:2021-12-01 12:27:46 【问题描述】:

我已经按照 phppots 教程制作了一个简单的购物车。使用以下代码创建一个数组,当“添加”动作发生时,我最终会在 $_SESSION["cart-item"] 数组中得到值。

<?php
$db_handle= new dbcontroller();
if(!empty($_GET["action"])) 

    switch($_GET["action"]) 
    
        case "add":
            if(!empty($_POST["quantity"])) 
            
                $productByCode = $db_handle->runQuery("SELECT * FROM products WHERE code='" . $_GET["code"] . "'");
                $itemArray = array($productByCode[0]["code"]=>array('name'=>$productByCode[0]["name"], 'code'=>$productByCode[0]["code"], 'quantity'=>$_POST["quantity"], 'price'=>$productByCode[0]["price"], 'image'=>$productByCode[0]["image"]));
                
                if(!empty($_SESSION["cart_item"])) 
                
                    if(in_array($productByCode[0]["code"],array_keys($_SESSION["cart_item"]))) 
                    
                        foreach($_SESSION["cart_item"] as $k => $v) 
                        
                                if($productByCode[0]["code"] == $k) 
                                
                                    if(empty($_SESSION["cart_item"][$k]["quantity"])) 
                                    
                                        $_SESSION["cart_item"][$k]["quantity"] = 0;
                                    
                                    $_SESSION["cart_item"][$k]["quantity"] += $_POST["quantity"];
                                
                        
                     else 
                    
                        $_SESSION["cart_item"] = array_merge($_SESSION["cart_item"],$itemArray);
                    
                 else 
                
                    $_SESSION["cart_item"] = $itemArray;
                
            
        break;
        case "remove":
            if(!empty($_SESSION["cart_item"])) 
            
                foreach($_SESSION["cart_item"] as $k => $v) 
                
                   
                    if($_GET["code"] == $_SESSION["cart_item"] [$k]['code'])
                        unset($_SESSION["cart_item"][$k]);              
                    if(empty($_SESSION["cart_item"]))
                        unset($_SESSION["cart_item"]);                  
              
                
            
        break;
        case "empty":
            unset($_SESSION["cart_item"]);
          
        break;
        case "Placeorder";
            if(!empty($_SESSION["cart_item"])) 
                       
                    $insertOrder = $db_handle->runQuery("INSERT INTO `orders`(`Order ID`,`Order Date`) VALUES('$S','$Todaysdate')");
                    foreach ($_SESSION["cart_item"] as $item)
                   

                    unset($_SESSION["cart_item"]);
                    if(empty($_SESSION["cart_item"]));      

                    
                    if (ini_get("session.use_cookies")) 
                        $params = session_get_cookie_params();
                        setcookie(session_name(), '', time() - 42000,
                            $params["path"], $params["domain"],
                            $params["secure"], $params["httponly"]
                        );
                                        
                    // Finally, destroy the session.
                    session_destroy();

                  
        break;    
    

?>

“下订单”案例有效地将数据插入到orders 表中,效果很好。问题是我还希望将 $_SESSION["cart-item"] 的数组内容插入到 order items 表中。我知道我必须内爆或多行插入,但在拼凑代码时遇到了麻烦。订单商品表列名称为:商品名称、商品代码、商品数量、商品价格、商品图片和订单 ID。订单 ID 是变量 $S,这是我事先设置好的。我相信代码应该是这样的:

foreach($_SESSION["cart-item"] AS $item)
("INSERT into order items(`Item Name`, `Item Code`, `Item Quantity`, `Item Price`, `Item Image`, `Order ID`) VALUES($item['name'], $item['code'], $item['quantity'], $item['price'], $item['image'], '$S')");

我觉得我很接近,但无法拼凑起来。任何帮助将不胜感激。

【问题讨论】:

如果您使用参数化查询和准备好的语句,您会发现它更容易。这也将修复代码中的 SQLi 漏洞。 正在查找,谢谢。 【参考方案1】:

表名错误,您使用 order 代替 orders 使用这个:

foreach($_SESSION["cart-item"] AS $item) ("插入订单项目(Item Name, Item Code, Item Quantity, Item Price, Item Image, Order ID) VALUES($item['name'], $item['code'], $ item['quantity'], $item['price'], $item['image'], '$S')");

【讨论】:

以上是关于如何将 php 数组值发布到 mysql 表中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PHP 数组中的值插入 MySQL 表?

将两个数组插入到一个mysql表中

MySQL/PHP 输出数组重复查询然后显示结果,如何删除查询? [复制]

如何将文本附加到特定的php数组值

将mysql数据库值检索到数组中

如何使用 PHP Wordpress 将沙箱 Paypal 返回值插入 MySQL 表?