Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当用户签出以比较购物车数量与数据库数量时,即使购物车中有多个项目,最终检查也只返回一条记录_Php_Mysql - Fatal编程技术网

Php 当用户签出以比较购物车数量与数据库数量时,即使购物车中有多个项目,最终检查也只返回一条记录

Php 当用户签出以比较购物车数量与数据库数量时,即使购物车中有多个项目,最终检查也只返回一条记录,php,mysql,Php,Mysql,当一个用户签出时,我试图对照数据库检查我的整个购物车数组,以确保他们购物车中的项目仍然可用,而另一个用户没有在这两者之间购买最后一个项目。但我很难找到一张以上的唱片。在我检查购物车和数据库中的内容之前,我只是尝试在这个阶段获取数据库中每个产品id的数量 这是我的控制器,它只是将数据库调用中的数据放入$totals变量中 if(isset($_SESSION['cart_array'])) { $response = array(); $totals = $this->P

当一个用户签出时,我试图对照数据库检查我的整个购物车数组,以确保他们购物车中的项目仍然可用,而另一个用户没有在这两者之间购买最后一个项目。但我很难找到一张以上的唱片。在我检查购物车和数据库中的内容之前,我只是尝试在这个阶段获取数据库中每个产品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循环还是现在的位置,即使购物车中有多个项目,我也只会返回一个结果。

您不断使用上次检查的产品覆盖$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;

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

您不断地用最后一个检查的产品覆盖$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;

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

此格式的循环没有任何意义…循环用于使用产品id检查数据库中的每个项目。我正在尝试在运行查询时将产品id绑定到循环中。循环用于检查。。。循环基本上没有做任何事情(除了浪费内存)。您的这种格式的循环没有任何意义…循环用于使用产品id检查数据库中的每个项目。我正在尝试在运行查询时将产品id绑定到循环中。循环用于检查。。。循环基本上什么也没做(除了浪费内存)