我有以下代码:
$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") {
}
}
但它只返回最后一行。我的目标是按时间顺序列出“活动”,每个活动根据其类型显示略有不同。
答案 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
您可以将第一个的结果加载到数组中,然后循环遍历数组。