0

大家下午好,我有一种情况,我需要在每次父循环迭代后继续将 MySQL 结果附加到现有结果中。我正在使用的示例如下所示:

while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
   $result2 = mysql_query("SELECT * FROM Products WHERE id='".$record['target']."'");
}

我希望为“while”循环的每次迭代附加到 $result2 上,以便我可以在 $result2 中有一个完整的列表,以后可以处理。我怎样才能完成这项任务?

谢谢,戴夫

4

2 回答 2

1

你为什么不使用这个IN方法,而不是运行未知数量的查询,这真的会减慢你的应用程序?然后在 1 个查询中获取所有结果。像:

$ids = "";
while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
    if( $record['target'] )
    {
        $ids .= "," . $record['target']
    }
    else
    {
        $ids = $record['target'];
    }
}
$result2 = mysql_query("SELECT * FROM Products WHERE id IN (".$ids.")");

现在$result2包含以前的所有产品$result

更多信息

  1. MySQL 输入
于 2013-02-20T20:26:21.057 回答
0

我相信这就是你要找的。

   <?
    $resultSetQueue     = Array();
    $results             = Array();
    $resultSetQueue[]    = mysqli_query("SELECT * FROM Products WHERE <Initial Criteria>");

    for($i = 0; $i < count($resultSetQueue); $i++){
        $in = "";
        while($row = mysql_fetch_assoc($resultSetQueue[$i])){
           $in                 .=  $row['target']. ",";
           $results[]           =   $row;
        }
        $resultSetQueue[]       =   mysqli_query("SELECT * FROM Products WHERE id IN (". substr($in, 0, strlen($in) - 2). ")");
?>

每个查询结果集都被添加到结果集队列中,当它进入 for($i... 循环时进行处理。

不过要小心。这有可能无限循环(直到达到内存使用限制)。

编辑:更好的查询方法 - 使用 IN。

于 2013-02-20T20:23:02.447 回答