PHP echo $ row ['username']没有显示第一个用户名?

时间:2012-05-08 20:04:12

标签: php mysql database

我不确定这里的问题是什么,我有一个post表,其中有一个userid的外键,我想根据它从users表中提取他们的用户名,它似乎把它们拉得很好但是它不会显示在第一篇文章上。 我的代码是:

$query_therealuserid = 'SELECT users.username, users.userid, posts.userid, posts.created_at
FROM users, posts
WHERE users.userid = posts.userid
ORDER BY posts.created_at';

$therealuserid = mysql_query($query_therealuserid, $akaearthdb) or die(mysql_error());

和                              

<?php do { ?>
  <div id= "post">
    <?php if (stripos($row_rsjustpost['link'], ".png") !== false) {?>
            <img src="<?php echo $row_rsjustpost['link']; ?>" id="postImage" alt="Broken Link">
            <?php }?>
    <?php if (stripos($row_rsjustpost['link'], ".gif") !== false) {?>
            <img src="<?php echo $row_rsjustpost['link']; ?>" id="postImage" alt="Broken Link">
            <?php }?>
    <?php if (stripos($row_rsjustpost['link'], ".jpg") !== false) {?>
            <img src="<?php echo $row_rsjustpost['link']; ?>" id="postImage" alt="Broken Link">
            <?php }?>
    <?php if (stripos($row_rsjustpost['link'], ".jpeg") !== false) {?>
            <img src="<?php echo $row_rsjustpost['link']; ?>" id="postImage" alt="Broken Link">
            <?php }?> 

    <a href="<?php echo $row_rsjustpost['link']; ?>"><?php echo $row_rsjustpost['title']; ?></a>
    <br/>
    <?php echo $row_rsjustpost['text']; ?>
    </p>
    <br />

            <?php 
            do {
            if ($whileLoopCounter0!=$whileLoopCounter1){break;}
        ?>By: <?php echo $row['username'];
        echo "<br />";
            $whileLoopCounter1++;

            } while($row = mysql_fetch_array($therealuserid));
            ?>


  </div>
  <?php $whileLoopCounter0++; ?>
  <?php } while ($row_rsjustpost = mysql_fetch_assoc($rsjustpost)); ?>
</div>

当我拉起页面时,我收到所有帖子,但第一个没有用户名,用户名都被推到一个帖子。第一篇文章的postid为2,如果我创建一个postid为1的新帖子,并且在没有用户名的情况下显示在顶部的用户名,则其他用户名会向上移动,以便它们是核心。

3 个答案:

答案 0 :(得分:3)

那是因为你使用do-while循环,$row = mysql_fetch_array($therealuserid)在循环结束时执行,为什么不使用常规的while循环。

答案 1 :(得分:1)

您当前正在使用do-while循环,因此首先执行do块,然后仅在第一次执行do块之后评估while块。

请改用:

while ($whileLoopCounter0==$whileLoopCounter1) {
   $row = mysql_fetch_array($therealuserid);
   if ($row){
 ?>
 By: 
 <?php 
      echo $row['username'];
      echo "<br />";
      $whileLoopCounter1++;
    }
}

答案 2 :(得分:0)

在递增循环计数器后,您似乎正在获取用户名。在循环为1之后拉出用户名,因此第一行将为空,因为该数据尚不存在。

虽然你正在做的事情还有很多其他事情,但这只是浪费精力。如果您不需要密钥,请尝试将结果投放到对象中并使用foreach($result as $key=>$value)foreach($result as $item)