php - 从数据库而不是会话中获取特定产品的数量 - 购物车(PHP 和 MySQL)
问题描述
我一直在尝试从基于会话的 php 购物车开始创建一个持久的基于 MySQL 的购物车应用程序。该cart
表具有结构userid | productid | quantity | postingdate
。在基于会话的实现中,某个产品的数量信息存储在$_SESSION['cart'][$row['id']]['quantity'];
; 我在从cart
数据库中的表中检索特定产品的数量信息时遇到了麻烦,因为我似乎找不到如何提取查询productId
所需的信息$getquantity
。
$sql1 = "SELECT * FROM cart WHERE userid='$userId'"; //selects the user's cart
$query1=mysqli_query($con,$sql1);
if (!empty($query1)) { //if the user's cart isn't empty
while($row = mysqli_fetch_array($query1)){
$query = mysqli_query($con,"SELECT * FROM products JOIN cart ON cart.productid=products.id
ORDER BY cart.postingDate DESC"); //selects all the products in the current user's cart
}
$totalprice=0;
$totalqunty=0;
if (!empty($query)) {
while ($row = mysqli_fetch_array($query)) { //for each product
//$quantity=$_SESSION['cart'][$row['id']]['quantity']; //SESSION IMPLEMENTATION
$id = $row['id'];
$quantity = mysqli_query($con,"SELECT quantity FROM cart WHERE userid='$userId' AND productid='$id'"); //MY IMPLEMENTATION, THE WRONG PART IS WITH $id
$subtotal= $quantity*$row['productPrice']+$row['shippingCharge'];
$totalprice += $subtotal;
$_SESSION['qnty']=$totalqunty+=$quantity; //SESSION IMPLEMENTATION
}
}
}
我已经尝试过,但它从返回的记录中返回了$row['id']
一个数组,而 MySQl 似乎不接受它,而我需要在每个. 请不要介意它如何容易受到 SQL 注入的影响,因为我将在后面的阶段中介绍。productid
$query
$getquantity
productid
解决方案
这是一个可行的解决方案:我可以只选择cart.quantity
属性(考虑到products
和cart
表的连接方式):
$sql1 = "SELECT * FROM cart WHERE userid='$userId'"; //selects the user's cart
$query1=mysqli_query($con,$sql1);
if (!empty($query1)) { //if the user's cart isn't empty
while($row = mysqli_fetch_array($query1)){
$query = mysqli_query($con,"SELECT products.productImage1 , products.productName ,
products.id, cart.productId, cart.quantity as qty, products.productPrice,
products.shippingCharge FROM products JOIN cart ON cart.productid=products.id
ORDER BY cart.postingDate DESC"); //selects all the products in the current user's cart
}
$totalprice=0;
$totalqunty=0;
if (!empty($query)) {
while ($row = mysqli_fetch_array($query)) { //for each product
$quantity=$row['qty'];
$subtotal= $quantity*$row['productPrice']+$row['shippingCharge'];
$totalprice += $subtotal;
}
}
}
推荐阅读
- haskell - 在 Haskell 中不使用 + 运算符将两个数字相加
- sql - 如何使用嵌套在 OR 中的多个 AND 条件来索引 SQL
- html - 自定义 window.print()
- r - 基于ggtree中的外部数据集着色标签
- javascript - 'Observable' 类型上不存在属性 'catch'
' - opencv - 我的 OpenCV 下载有问题吗?
- r - R:如何在 grid.table 中使用等宽(固定宽度)字体?
- bash - 如何使用 bash 按字符串拆分列?
- batch-file - 批处理脚本的奇怪输出
- ansible - Ansible 转义点与 map 函数一起用作属性