我对PHP / MySQL有一个非常奇怪的问题......
回声“id; id”
foreach($ids as $id) {
echo "id;";
}
回声“id; id; id; id; ...”(无限循环)
foreach($ids as $id) {
while($row = mysqli_fetch_array(mysqli_query($conn, "SELECT * FROM `Table` WHERE `id`=$id;") {
echo "id;";
}
}
我有一个foreach()语句的原因是因为我对$ id进行了排序。
答案 0 :(得分:1)
你将获得一个无限循环,因为你每次都通过while
循环重新运行查询。这意味着,对于每个$id
,您将连续运行查询并从中提取第一行。因此,对于任何返回超过零行的查询,不断重新执行该查询将使while
循环无止境。
它在功能上与下面的伪代码类似,由于你在循环中修改控制条件,它也将永远循环:
loop i from 1 to 10
set i to 1
endloop
你应该尝试类似的事情:
foreach($ids as $id) {
$result = mysqli_query($conn, "SELECT * FROM `Table` WHERE `id`=$id;");
while($row = mysqli_fetch_array($result)) {
echo "id;";
}
}
这将为每个ID运行查询一次,while
循环将处理该查询的行。