0

我正在尝试在遍历循环时合并所有结果

$result = ....;
$finalresult = 0;

while($row = mysql_fetch_assoc($result))
{
    $clubID = $row['clubID'];
    $finalresult = mysql_query('"'.$finalresult.'" UNION ALL SELECT * FROM events WHERE clubID = "'.$clubID.'"');
}

但是,这是行不通的。还有另一种方法可以做到这一点吗?

4

1 回答 1

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,这将失败,因此您需要添加一些错误检查。

其次,mysql_* 在 PHP 5.5 中已被弃用,因此您应该考虑改用 mysqli_* 或 PDO - 它们都更安全。

于 2013-06-26T17:43:02.260 回答