现在试图找出近两个小时的错误。
我为我的网站制作了一个墙贴功能,帖子应该显示在个人资料墙上,但是不是显示所有帖子,只有1个。我不知道我的代码有什么问题,我找不到任何问题。
$ profile_username变量已在先前的代码中定义并且有效。即使我只是在其中键入配置文件的名称,仍然只返回一个帖子。
//----------submit wall post----------//
$getwallposts = mysql_query("SELECT * FROM `wallposts` WHERE `postedto`='$profile_username' ORDER BY `postid`");
//check if any rows are returned
while($wallposts = mysql_fetch_assoc($getwallposts)) {
$postid = $wallposts['postid'];
$postedby_username = $wallposts['postedby'];
$wallpostdate = $wallposts['dateposted'];
$wallpost = $wallposts['post'];
$querypostedby_info = mysql_query("SELECT * FROM `users` WHERE `username`='$postedby_username'");
//get the info above
if (mysql_num_rows($querypostedby_info) > 0) {
$getpostedby_info = mysql_fetch_assoc($querypostedby_info);
$postedby_id = $getpostedby_info['id'];
$postedby_profilepicture = $getpostedby_info['profilepicture'];
}
//lets keep the line breaks
$wallpost=nl2br($wallpost);
//display the posts
$wallpoststicker =
"
<div id='wallpost-container'>
<div id='wallpost-header'>
<img src='$postedby_profilepicture'><div id='wallpost-header-by'><a href='/profile.php?id=$postedby_id'>$postedby_username</a> said:</div>
<div id='wallpost-date'>• $wallpostdate</div>
</div>
<div id='wallpost-content'>
$wallpost
</div>
</div>
";
}
另外,我知道mysql已被弃用;我的PHP版本可以很好地处理mysql查询。
答案 0 :(得分:0)
你在哪里回应你的输出? 如果它在After之后,您将只获得存储在变量中的最后一个结果。
while循环内的输出。
答案 1 :(得分:0)
我可以看到该代码存在的一些问题。首先,它似乎是你的问题:
$wallpoststicker =
"
<div id='wallpost-container'>
<div id='wallpost-header'>
<img src='$postedby_profilepicture'><div id='wallpost-header-by'><a href='/profile.php?id=$postedby_id'>$postedby_username</a> said:</div>
<div id='wallpost-date'>• $wallpostdate</div>
</div>
<div id='wallpost-content'>
$wallpost
</div>
</div>
";
此代码会覆盖每个循环上的$ wallpoststicker变量。这就是为什么你只在最后打印一个结果。
但其次,你在循环中进行查询,这可能是非常低效的。您是否考虑过在“wallposts”和“users”之间进行LEFT JOIN,以便在开始循环之前获得所需的所有数据?