首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次迭代都追加到sql结果上

每次迭代都追加到sql结果上
EN

Stack Overflow用户
提问于 2013-02-21 03:41:31
回答 2查看 65关注 0票数 0

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

代码语言:javascript
复制
while ($record = mysql_fetch_row($result,MYSQL_ASSOC)) {
   $result2 = mysql_query("SELECT * FROM Products WHERE id='".$record['target']."'");
}

我希望为'while‘循环的每一次迭代都附加到$result2上,这样我就可以在$result2中获得一个完整的列表,以便以后可以处理。我如何才能完成这项任务?

谢谢,戴夫

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-21 04:26:21

为什么不使用IN方法,而是运行未知数量的查询,这确实会减慢应用程序的运行速度?然后在一个查询中得到所有结果。像这样:

代码语言:javascript
复制
$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 IN
票数 1
EN

Stack Overflow用户

发布于 2013-02-21 04:23:02

我相信这就是你要找的。

代码语言:javascript
复制
   <?
    $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...循环。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14988537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档