当用户 checkout 比较购物车数量和数据库数量时,final check只返回一条记录,即使购物车中有多个项目

esyap4oy  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(261)

当一个用户 checkout 以确保他们购物车中的项目仍然可用,而另一个用户没有购买介于两者之间的最后一个项目时,我正在尝试根据数据库检查我的整个购物车数组。但是我很难找到一张以上的唱片。在我检查购物车和数据库中的内容之前,我只是想在这个阶段获取数据库中每个产品id的数量。
这是我的控制器,它只是将数据库调用中的数据放入$totals变量。

if(isset($_SESSION['cart_array'])) {

    $response = array();

    $totals = $this->ProductFendModel->finalDbQtyCheckoutCheck();

    $response['cart'] = $totals;
    echo json_encode($response);

}

这是模型中的数据库查询:

$purchased = '0000-00-00';
    $this->db->query("SELECT COUNT(`product_id`) as `vouchersLeft`, `product_id` FROM `vouchers` WHERE `product_id` = :product_id AND `purchased` = :purchased");
    $this->db->bind(":purchased", $purchased);
    $this->db->bind(":product_id", $prod_id);

    foreach($_SESSION['cart_array'] as $cart) {
        $prod_id = $cart['prod_id'];
        $quantity = $cart['quantity'];
    }

    $results = $this->db->resultSet();
    return $results;

无论我把$results放在foreach循环中还是放在它现在的位置,我都只得到一个结果,即使购物车中有多个项目。

yc0p9oo0

yc0p9oo01#

您不断地用最后检查的产品覆盖$results变量。如果您想保留购物车中所有产品的数据,可以将信息存储在一个数组中。像这样:

$purchased = '0000-00-00';
$this->db->query("SELECT COUNT(`product_id`) as `vouchersLeft`, `product_id` FROM `vouchers` WHERE `product_id` = :product_id AND `purchased` = :purchased");
$this->db->bind(":purchased", $purchased);
$this->db->bind(":product_id", $prod_id);

$results = [];

foreach($_SESSION['cart_array'] as $cart) {
    $prod_id = $cart['prod_id'];
    $quantity = $cart['quantity'];
    $results[] = $this->db->resultSet();
}

return $results;

现在,在控制器中,您可以在数组中循环,并检查数量是否仍然正确(或者您可以在函数中正确地执行检查,您通常不希望控制器中有太多逻辑)

相关问题