3

我在 PDO 语句之后有一个 while 循环。我的代码如下。

 $query = "SELECT * FROM private_messages WHERE to_id = :my_id AND to_email = :email AND    recipient_delete='0' ORDER BY time_sent DESC";
 $stmt = $dbo->prepare($query);
 $stmt->execute(array(":my_id" => $my_id, ":email" => $email));
 $row = $stmt->fetch();
 while($row = $stmt->fetch()){ ...

输出的结果总是缺少其中的一行,因此用户最近收到的私人消息永远不会显示。我有一个通知器,它告诉用户他们有多少新消息,这些消息计数正确(它表明他们比实际消息列表输出多一条消息)。我无法使用谷歌找到答案,这让我发疯。这是自 80 年代早期 BASIC 以来我第一次尝试使用任何类型的语言进行编程,所以我把所有的时间都花在了阅读相关内容上,但找不到任何可以帮助我解决这个问题的东西。谁能告诉我哪里出错了?谢谢!

4

1 回答 1

5

删除行:

$row = $stmt->fetch();

它将第一行放在里面$row

那么当你这样做时:

while($row = $stmt->fetch()){ ...

它从第二行开始获取,而你获取的第一行丢失了,这就是为什么你总是只丢失一行。

于 2012-08-18T00:23:31.257 回答