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