php - while 循环和 PDO 语句

标签 php pdo while-loop

我在 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 以来第一次尝试使用任何类型的语言进行编程,所以我把所有的时间都花在阅读上,但找不到任何可以帮助我解决这个问题的东西。谁能告诉我哪里出错了?谢谢!

最佳答案

删除行:

$row = $stmt->fetch();

它把第一行放在$row

然后当你这样做时:

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

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

关于php - while 循环和 PDO 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014727/

相关文章:

php - 从 php 构建 javascript 时转义引号

PHP MySQL : Take highest values from multiple categories and write an array?

php - 树节点 MySQL 到 PDO 语句

php - PDO 比较 2 个字段

java - 使用 JDBC 在 while 循环中存储值

java - 如何让 while 循环中的 if else 嵌套循环正常工作,

php - YouTube嵌入开始时间直接从regex组转换为以秒为单位的时间

php - 将硬编码值从路由传递到 Controller (Laravel)的正确方法?

php - PDO 使用键作为列名插入数组

python - 我试图为健康栏创建一个 while 循环,但出现除法错误