【发布时间】:2020-02-10 16:46:58
【问题描述】:
我试图使用 PDO 从 mysql 获取一些数据。例如,有一张表用于存放 Mercedes、Audi、Bently、Toyota 等品牌名称。每个品牌的汽车名称还有另一个表格。 'brand' 表中的 id 是 'cars' 表中的外键。现在我想获取每个品牌名称中的所有汽车名称。这是我的代码:
// Outer loop for Brands
$query = "SELECT * FROM brand";
$result = $db->query($query);
while($row=$result->fetch(PDO::FETCH_OBJ)){
$brand_name = $row->brand_name;
$brand_id = $row->id;
echo $brand_name;
echo "<br>";
// Inner loop for Cars
$query = "SELECT * FROM cars WHERE brand_id = $brand_id";
$result = $db->query($query);
while($row=$result->fetch(PDO::FETCH_OBJ)){
$car_name = $row->car_name;
echo $car_name;
echo "<br>";
} // Ending of inner loop
} // Ending of outer loop
但是我在这里遇到了问题。获取第一个品牌名称,然后内部循环运行并获取该品牌中的汽车名称。当内循环完成获取所有汽车名称时,它应该再次转到外循环并找到下一个品牌名称。但它也没有获取其余的品牌名称和汽车名称。例如,如果它完成了获取丰田内部的所有汽车名称,它就不会去获取下一个品牌名称,即奥迪。
但是,如果我删除了内部 while 循环,它会毫无错误地获取所有品牌名称。请帮助我提供最好的解决方案。提前致谢。
【问题讨论】:
-
不是 'fetch try 'fetchAll',对于两个循环。
-
您使用的是相同的
$result和$row变量,这就是为什么它无法工作,因为 var 值被覆盖
标签: php mysql while-loop fetch nested-loops