我在 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/