-1

だから私のクエリは1つのメッセージがあると言いますが、テーブルには表示されません

クエリ

<?php
//Unread
$req1 = $db->query('
                      SELECT
                          m1.id,
                          m1.title, 
                          m1.timestamp, 
                          m1.user1,
                          m1.user2,                          
                          m2.id as reps, 
                          blog_users.username
                      FROM 
                          pm as m1, 
                          pm as m2,
                          blog_users 
                      WHERE 
                         ((m1.user1="'.$session->username.'" and m1.user1read="no" and blog_users.username=m1.user2) 
                      OR 
                          (m1.user2="'.$session->username.'" and m1.user2read="no" and blog_users.username=m1.user1)) and m1.id2="1" and m2.id=m1.id 
                      group by 
                           m1.id 
                      order by 
                           m1.id desc');
$req1->execute();
$req1c = $req1->fetchAll();
$result = $req1->rowCount();


  print_r($req1->errorInfo());  
    ?>

エラー情報の結果

Array ( [0] => 00000 [1] => [2] => )

転記表

<?php
//We display the list of unread messages
while($dn1 = $req1->fetch())
{

?>
    <tr>
        <td class="left"><a href="read_pm.php?id=<?php echo $dn1['id']; ?>"><?php echo htmlentities($dn1['title'], ENT_QUOTES, 'UTF-8'); ?></a></td>
        <td><?php echo $dn1['reps']-1; ?></td>
        <td><a href="profile.php?id=<?php echo $dn1['userid']; ?>"><?php echo htmlentities($dn1['username'], ENT_QUOTES, 'UTF-8'); ?></a></td>
        <td><?php echo date('Y/m/d H:i:s' ,$dn1['timestamp']); ?></td>
    </tr>
<?php
}

?>

1 メッセージが表示されるはずですが、表示されていません。また、mysqlに結果があるのに表示されないのも変です。

4

1 に答える 1

1

fetchAll() がリソース ポインターを結果セットの最後に設定しているため、これが発生していると思います。そのため、while ループに到達するまでに、フェッチする行が残っていないと結果が判断します。

結果オブジェクトに rewind() メソッドがあると思いますが、おそらく fetchAll() の結果を配列に代入し、代わりに「投稿テーブル」スクリプトでそれを反復処理する方がよいでしょう。

于 2013-07-28T17:05:31.340 に答える