PHP while循环循环除了第一个查询结果之外

时间:2016-08-17 10:49:24

标签: php sql pdo while-loop prepared-statement

我正在努力理解为什么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。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您已经通过$r1 = $stmt1->fetch(PDO::FETCH_ASSOC);获取了第一条记录,并在while循环中获取了其余记录。这应该有效 -

$stmt2->execute();

while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC)) {
  echo '<tr><td>' . $r1['user'] . '</td></tr>';
}

答案 1 :(得分:2)

那是因为你拿了两次。在while循环之前删除fetch

对于这样的事情,

$pdo = new PDO('connection');
$stmt2 = $pdo->prepare("SELECT user FROM records
ORDER BY date DESC");

$stmt2->execute();
while ($r1 = $stmt2->fetch(PDO::FETCH_ASSOC)) {
  echo '<tr><td>' . $r1['user'] . '</td></tr>';
}