PHP:最后一个数据行不会显示在pdo GET查询中

时间:2017-03-10 16:35:38

标签: php mysql pdo

嗨大家我试图从我的表中获取pdo数据,但最后插入的行永远不会出现在填充表中。当我添加另一行数据然后再次获取数据以填充I然后查看之前未显示的行中的数据,但最后插入的行未显示。

这是我的代码:

<?php
 # This program will allow an admin to see email stats for a certain user
 $userid = 1; // admin

 $email_to = 2 // employee id
 $email_by = 2 // employee id

 $sql = "SELECT * FROM users WHERE userid = :user_id AND (person = :email_to OR person = :email_by) ORDER BY date DESC";

 $stmt = $this->db->prepare($sql);
 $stmt->bindparam(":userid", $userid);
 $stmt->bindparam(":email_to", $email_to);
 $stmt->bindparam(":email_by", $email_by);
 $stmt->execute();

 if ($stmt->fetch(PDO::FETCH_ASSOC)) {

  echo $stmt->rowCount(); // gives me the expected number of rows

  while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {

  echo '<tr><td style="text-align:left;">' . $data['email_subject']
  . '</td><td>' . $data['email_date'] . '</td><td>'
  . $data['email_time'] . '</td></tr>';
 }
} else {
echo "Sorry, no record found.";
}

?>

如代码中所述,rowCount()确实为我提供了预期的行数e.g. 10,,但在填充的表格结果中,我只看到9 rows

先谢谢你们。

1 个答案:

答案 0 :(得分:0)

这是因为你无意中跳过if语句的第一行:

if ($stmt->fetch(PDO::FETCH_ASSOC)) { ...

你把它分配给任何东西。你可以使用

do {} while ()

循环。