MySQL在另一个查询的while循环中查询

时间:2010-07-11 01:54:32

标签: php mysql

我有以下代码:

$query = mysql_query("SELECT * FROM activity ORDER BY activity_time DESC LIMIT 50");
while($result = mysql_fetch_array($query)) {
    extract($result);
    if ($activity_type == "discussion") {

        $query = mysql_query("SELECT * FROM discussions WHERE discussion_uuid = '$activity_ref'");
        while($result = mysql_fetch_array($query)) {
            extract($result);
            echo $discussion_user . " said:<br>" . $discussion_text . "<br>";
        }

    } elseif ($activity_type == "file") {

    }
}

但它只返回最后一行。我的目标是按时间顺序列出“活动”,每个活动根据其类型显示略有不同。

2 个答案:

答案 0 :(得分:4)

你使用$ query和$ result两次所以第二个循环会覆盖第一个循环并停止...

$ query = mysql_query(“SELECT * FROM activity ORDER BY activity_time DESC LIMIT 50”);

$ query = mysql_query(“SELECT * FROM discussion WHERE discussion_uuid ='$ activity_ref'”);

与$ results var ...相同

我建议您更改为$ query和$ query2,但最好使用类似

的内容
$activies = mysql_query("SELECT * FROM activity ORDER BY activity_time DESC LIMIT 50");
while($activity = mysql_fetch_array($activies)) {

$discussions = mysql_query("SELECT * FROM discussions WHERE discussion_uuid = '$activity_ref'");
while($discussion = mysql_fetch_array($discussions)) {

我也会避免使用提取物 - 因为你可能会覆盖你不期望的变种......

答案 1 :(得分:1)

您必须创建另一个与数据库的连接,以便您可以同时运行它们。

OR

您可以将第一个的结果加载到数组中,然后循环遍历数组。