MySQL只返回一个值

时间:2016-02-14 12:08:44

标签: php mysql sql-order-by

现在试图找出近两个小时的错误。

我为我的网站制作了一个墙贴功能,帖子应该显示在个人资料墙上,但是不是显示所有帖子,只有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'>&bull; $wallpostdate</div> 
        </div>
        <div id='wallpost-content'>
            $wallpost
        </div>
    </div>
    ";
}

另外,我知道mysql已被弃用;我的PHP版本可以很好地处理mysql查询。

2 个答案:

答案 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'>&bull; $wallpostdate</div> 
    </div>
    <div id='wallpost-content'>
        $wallpost
    </div>
</div>
";

此代码会覆盖每个循环上的$ wallpoststicker变量。这就是为什么你只在最后打印一个结果。

但其次,你在循环中进行查询,这可能是非常低效的。您是否考虑过在“wallposts”和“users”之间进行LEFT JOIN,以便在开始循环之前获得所需的所有数据?