【发布时间】:2016-04-23 16:16:22
【问题描述】:
因此,对于学校,我正在尝试建立一个网上商店(这是一个项目),对于购物车,我使用一个数据库,在其中我根据用户获取信息并打印出来。然而,我的 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.";
}
?>
谁能帮我解决这个问题?
【问题讨论】:
-
您在两个循环中都使用
$row和$result,因此内部循环中的值会覆盖外部循环中的值.....一定会导致问题......如果你必须像这样嵌套循环,为每个循环使用不同的变量名(至少对于$result) -
如果您学会了使用 SQL JOIN,那么您甚至不需要嵌套循环
-
我不知道sql join,对我来说只是第一年的第二个学期
-
但是你可以自己做一些阅读/学习,对吧?
-
尝试使用此查询而不是您的主要查询。删除第二个查询和第二个 while 循环。
echo $row['naam']看看你得到了什么结果SELECT c.*, p.* FROM cart c INNER JOIN Products p ON p.product_id = c.product_id where user_id=:userid ORDER BY cart_id DESC LIMIT 3我假设 product_id 是两个表中的一个字段。
标签: php mysql pdo while-loop fetch