我正在尝试将所有结果组合在一起进行循环
$result = ....;
$finalresult = 0;
while($row = mysql_fetch_assoc($result))
{
$clubID = $row['clubID'];
$finalresult = mysql_query('"'.$finalresult.'" UNION ALL SELECT * FROM events WHERE clubID = "'.$clubID.'"');
}
但是,这不起作用。还有另一种方法吗?
答案 0 :(得分:2)
这应该可以解决问题:
$clubIDs = array();
while($row = mysql_fetch_assoc($result)) {
$clubIDs[] = $row['clubID'];
}
$finalresult = mysql_query("SELECT * FROM events WHERE clubID IN (" . implode(',', $clubIDs) . ")");
它会从您之前的查询中生成一个clubID列表,并将它们放入一个数组中。然后,它使用该数组生成一个IN子句,并一次性检索所有数据。
一些警告 - 如果没有有效的俱乐部ID,这将失败,因此您需要添加一些错误检查。
其次,在PHP 5.5中不推荐使用mysql_ *,所以你应该考虑使用mysqli_ *或PDO - 它们更加安全。