所以对于学校我正在尝试建立一个网上商店(这是一个项目),对于购物车我使用数据库,我根据用户获取信息并打印出来.然而,我的while循环只找到最后一项,而不是其他两项.现在我很确定旧数据被覆盖,以便它不会被打印,但我不知道如何解决这个问题
这是我到目前为止所得到的:
<?PHP
if(isset($_SESSION['userid'])){
$db = new PDO('MysqL:host=localhost;dbname=ismsite', 'root', 'e-scooter');
$result = $db->prepare("SELECT * FROM cart where user_id=:userid ORDER BY cart_id DESC LIMIT 3 ");
$result->bindParam(':userid', $_SESSION['userid']);
$result->execute();
$info = array();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
$pid = $row['product_id'];
$quantity = $row['quantity'];
$result = $db->prepare("SELECT * FROM Products WHERE productID=:pid");
$result->bindParam(':pid', $pid);
$result->execute();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
echo $row['naam'];
}
}
}
else{
echo "Je moet inloggen om te kunnen winkelen.";
}
?>
任何人都可以帮我解决这个问题吗?
解决方法:
你应该使用SQL JOIN.
试试这种方式: –
$db = new PDO('MysqL:host=localhost;dbname=ismsite', 'root', 'e-scooter');
$sql = "SELECT cart.*,Products.* FROM cart
LEFT JOIN Products
ON cart.product_id = Products.productID
where cart.user_id=:userid ORDER BY cart.cart_id DESC LIMIT 3";
$result = $db->prepare($sql);
$result->bindParam(':userid', $_SESSION['userid']);
$result->execute();
while($row = $result->fetch(PDO::FETCH_ASSOC)){
echo $row['naam'];
}