在基于php中特定变量的foreach循环中添加到数据库中


adding to database inside a foreach loop based on a specific variable in php

我有一个购物车,它有一个文本框来更新每个商品的数量。当用户单击更新按钮时,我循环浏览每个项目,并在保存购物车信息的数据库表中更新它们的数量。现在我添加了一个礼品卡功能,我遇到了一个问题。当用户更新某个价格的礼品卡的数量时,我不仅需要更新购物车表,还需要创建另一张具有唯一卡号的礼品卡。如果在foreach循环中物品是礼品卡,我正试图弄清楚如何添加另一张礼品卡。这是我更新群的代码:

foreach ($_POST['quantity'] as $sku => $qty) {
        list($pid, $szid) = explode("-", $sku);
        if ($pid) { $pid=trim($pid);}
        if ($szid) { $szid=ltrim($szid);}
        if (isset($pid, $szid)) {
            $qty = (filter_var($qty, FILTER_VALIDATE_INT, array('min_range' => 0))) ? $qty : 1;
            $r = mysqli_query($dbc, "CALL update_cart('$uid', $pid, $qty, $szid)");
        }
    }

这段代码的工作原理正是我希望它更新购物车项目的数量。现在我不知道如何更改它来检查$pid是否为1,并在礼品卡表中添加一张新的礼品卡(如果是)。这是我最好的尝试,但似乎不起作用:

foreach ($_POST['quantity'] as $sku => $qty) {
        list($pid, $szid) = explode("-", $sku);
        if ($pid) { $pid=trim($pid);}
        if ($szid) { $szid=ltrim($szid);}
        if (isset($pid, $szid)) {
            $qty = (filter_var($qty, FILTER_VALIDATE_INT, array('min_range' => 0))) ? $qty : 1;
            $r = mysqli_query($dbc, "CALL update_cart('$uid', $pid, $qty, $szid)");
            while($pid == 1 ) {
                $gcn = md5(uniqid('biped', true));
                $card = 'GC'.$gcn.'';
                $amt = $_POST['price'];
                // Add to gift card table
                $r = mysqli_query($dbc, "CALL add_gift_card('$szid', '$uid', '$card', '$amt')");
            }
        }
    }

我需要代码来检查礼品卡$pid有多少$qty,并对每个$qty运行add_gift_card查询,其中$pid等于1。

哦,这是表格,如果你想看的话:

echo'<input type="text" class="cart-item-quantity" name="quantity['.$cart['sku'].']" value="'.$cart['quantity'].'" size="" />';
                                            echo'<input type="hidden" name="price" value="'.$price.'" />';

任何帮助或指导都会很棒。

if ($pid == 1) {
    for ($i = 0; $i < $qty; $i++) {
        $gcn = md5(uniqid('biped', true));
        $card = 'GC'.$gcn.'';
        $amt = $_POST['price'];
        // Add to gift card table
        $stmt = mysqli_prepare($dbc, "CALL add_gift_card(?, ?, ?, ?)";
        mysqli_stmt_bind_param($stmt, 'sisi', $szid, $uid, $card, $amt);
        $r = mysqli_stmt_execute($stmt);
    }
}