我不确定这里的问题是什么,我有一个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的新帖子,并且在没有用户名的情况下显示在顶部的用户名,则其他用户名会向上移动,以便它们是核心。
答案 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)
。