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()){ ...

出力された結果には常に行の1つが欠落しているため、ユーザーが受信した最新のプライベートメッセージは表示されません。正しくカウントされている新しいメッセージの数をユーザーに通知する通知機能があります(実際のメッセージリストの出力よりも1つ多いメッセージがあることを示しています)。私はグーグルを使って答えを見つけることができず、それは私を夢中にさせています。80年代のBASICの初期以来、これはあらゆる種類の言語でプログラミングを試みるのは初めてなので、私はすべての時間を物事について読んでいますが、この問題を解決するのに役立つものは何も見つかりません。誰かが私がどこで間違っているのか教えてもらえますか?ありがとう!

4

1 に答える 1

5

次の行を削除します。

$row = $stmt->fetch();

最初の行を中に入れます$row

次に、あなたがするとき:

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

2行目以降の取得を開始し、取得した1行目が失われるため、常に1行しか欠落していません。

于 2012-08-18T00:23:31.257 に答える