【发布时间】:2019-11-01 03:41:24
【问题描述】:
我正在遍历 MySQL DB 中的 2 个表(使用 fetch_assoc())。我想在每次迭代中获取第一个表的当前 id 和第二个表的所有 id,但我只在第一次迭代时获得第二个表的 id。从第二次迭代开始,只返回第一个表的当前 id。我想知道我做错了什么。
我已经尝试过循环并在此处查找了类似的问题,但没有一个真正有帮助。
<?php
$my_sqli = new mysqli('localhost', 'root', '', 'taskpro') or die(mysqli_error($my_sqli));
$data1 = $my_sqli->query("SELECT * FROM task_table") or die($my_sqli->error);
$data2 = $my_sqli->query("SELECT * FROM taskinfo") or die($my_sqli->error);
while ($row = $data1->fetch_assoc()) {
echo "<br>";
echo $row['id'];
echo "<br>";
while ($row2 = $data2->fetch_assoc()) {
echo $row2['id'];
} // end child loop
} // end parent loop
?>
这是我得到的结果
1
1234
2
3
4
5
6
7
8
9
10
【问题讨论】:
-
因为您第一次在外循环中消耗了第二个查询的所有结果集。基本上到了 EndOfFile 所以没有什么要获取的了
-
是的,这就是它的工作原理,您需要
requery。如果您想再次获取数据。或者请先将两个数据存储在数组中,然后再进行操作。