为了账号安全,请及时绑定邮箱和手机立即绑定

foreach 未执行 - 仅显示第一个变量输入

foreach 未执行 - 仅显示第一个变量输入

PHP
素胚勾勒不出你 2022-05-27 15:42:41
我试图弄清楚为什么我的 foreach 循环没有提供多个变量(第一个变量) - 我正在尝试创建一个电子商务网站,这是我的购物车的保存功能。两个 sql 语句都是正确的并进入我的数据库。有两个表 - 一个发票表和另一个表,我将显示订购的产品。我正在使用重置功能来获取我在另一个功能中上传的图像的 ID。有人有什么想法吗?public static function submit(){            $nOrderNum = date("Y-m-d").mt_rand();    $orderDate = date("Y-m-d h:m:s");    $firstname = $_POST["firstname"];    $lastname = $_POST["lastname"];    $email = $_POST["email"];    $phone = $_POST["phone"];    $address = $_POST["address"];    $imgID = AllMerch::getImgs();    $orderToggle = 0;    $value = reset($imgID);    $con = Db::connect();    mysqli_query($con,"    INSERT INTO invoice     (        nOrderNum,         strOrderDate,         strName,         strLast,         strEmail,         nPhone,         strAddress,         nPrice,         bOrderToggle        ) VALUES (            '".$nOrderNum."',             '".$orderDate."',             '".$firstname."',             '".$lastname."',            '".$email."',            '".$phone."',            '".$address."',            '".Cart::checkoutTotal()."',            '".$orderToggle."'            )");        $invoiceID =  mysqli_insert_id($con);    foreach($_SESSION["arrCart"] as $merch){            mysqli_query($con,"        INSERT INTO merch_history         (            nInvoiceID,            nProductsID,            nQty,            nPrice,             nImgID        ) VALUES (            '".$invoiceID."',            '".$merch["id"]."',            '".$merch["currentQty"]."',            '".$merch["price"]."',            '".$value."'        )");        $sql = "UPDATE products SET nQty = nQty - '".$merch["currentQty"]."' WHERE id = '".$merch["id"]."'";        $sql = "UPDATE images SET nInvoiceID = '".$invoiceID."' WHERE nSessionID = '".$_SESSION['id']."'";}}
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

这样做是因为最后 2 个语句在循环中,如我所示将它们取出:


    foreach($_SESSION["arrCart"] as $merch){        


        mysqli_query($con,"

            INSERT INTO merch_history 

            (

                nInvoiceID,

                nProductsID,

                nQty,

                nPrice, 

                nImgID

            ) VALUES (

                '".$invoiceID."',

                '".$merch["id"]."',

                '".$merch["currentQty"]."',

                '".$merch["price"]."',

                '".$value."'


            )");


            $sql = "UPDATE products SET nQty = nQty - '".$merch["currentQty"]."' WHERE id = '".$merch["id"]."'";


            $sql = "UPDATE images SET nInvoiceID = '".$invoiceID."' WHERE nSessionID = '".$_SESSION['id']."'";


            mysqli_query($con,$sql);


            $sql = "SELECT 

            merch_history.id, 

            merch_history.nInvoiceID, 

            merch_history.nProductsID, 

            merch_history.nQty, 

            merch_history.nPrice, 

            images.id AS imgID,

            images.strImage AS strImg

            FROM merch_history 

            LEFT JOIN images ON  images.id = merch_history.nImgID 

            ";

    }



$_SESSION['arrCart'] = array();

return $invoiceID;


查看完整回答
反对 回复 2022-05-27
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您的退货$invoiceID; 在 for 循环内,请尝试在循环外将其删除。



查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信