oop的新手,只是想知道为什么会导致无限循环:
while ($row=$dbh->query("SELECT * FROM animal")->fetch(PDO::FETCH_ASSOC)){
printf("A(n) %s is a type of %s<br />", $row['name'], $row['species']);
}
然而,这不会导致无限循环
$sth=$dbh->query("SELECT * FROM animal");
while ($row=$sth->fetch(PDO::FETCH_ASSOC)){
printf("A(n) %s is a type of %s<br />", $row['name'], $row['species']);
}
答案 0 :(得分:5)
在第一个代码示例中,您将循环重复运行查询,每次只获取第一行。
在第二个代码示例中,首先在循环开始之前运行一次查询。然后循环,获取结果集中的每一行,直到没有更多的行。
答案 1 :(得分:3)
每次都会执行while循环中的括号语句。这意味着你的查询每次都会开始,所以你总是在看第一个对象,所以无限循环!
第二种方式更正确。