当我通过循环时,我正在尝试组合所有结果
$result = ....;
$finalresult = 0;
while($row = mysql_fetch_assoc($result))
{
$clubID = $row['clubID'];
$finalresult = mysql_query('"'.$finalresult.'" UNION ALL SELECT * FROM events WHERE clubID = "'.$clubID.'"');
}
然而,这不起作用。有别的办法吗?
这应该可以做到:
$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,这将失败,所以你需要添加一些错误检查。
其次,mysql_*在PHP 5.5中已被弃用,因此您应该考虑使用mysqli_*或PDO,因为它们都更安全。