【发布时间】:2016-12-23 23:43:38
【问题描述】:
我很难理解为什么 while 循环没有遍历第一个查询结果。
$pdo = new PDO('connection');
$stmt2 = $pdo->prepare("SELECT user FROM records
ORDER BY date DESC");
$stmt2->execute();
$r2 = $stmt2->fetch(PDO::FETCH_ASSOC);
while ($r2 = $stmt2->fetch(PDO::FETCH_ASSOC)) {
echo '<tr><td>' . $r1['user'] . '</td></tr>';
}
我已阅读 this 线程,但它是 OOP。有什么建议吗?
【问题讨论】:
-
啊不要两次获取数据!!并与
$stmt2和$stmt1混淆 -
首先,查看
->execute()的返回值。如果是===FALSE,则查询失败,您应该检查$stmt->errorInfo()。也正如萨蒂所说,不要取两次。只在循环中获取。如果没有输出,则查询失败或数据库表为空(或只有一个条目被您在第一次提取时丢弃)。我什至忽略了$stmt1和$stmt2的混淆。该死。萨蒂,请接受我的投票。 -
谢谢,它现在正在工作,但我使用
$r1for not while 循环,例如echo $r1['user']。我想使用这样的东西:while ($r1 = $r1)但它使我的页面崩溃。可以在while循环中以某种方式使用变量$r1吗?
标签: php sql pdo while-loop prepared-statement