简体   繁体   English

在PHP中嵌套的foreach循环进行查询

[英]nested foreach loop in php for query

Im trying to insert data in my db. 我试图在我的数据库中插入数据。 It should look something like this -- 它应该看起来像这样-

     a_id=1 s_id=1 q_id=1
     a_id=1 s_id=1 q_id=2
     a_id=1 s_id=2 q_id=1
     a_id=1 s_id=2 q_id=2

right now it inserts something like this -- 现在它插入这样的东西-

     a_id=1 s_id=1 q_id=null
     a_id=1 s_id=2 q_id=null
     a_id=1 s_id=1 q_id=1
     a_id=1 s_id=1 q_id=2
     a_id=1 s_id=2 q_id=1
     a_id=1 s_id=2 q_id=2

I have been beating my head around it for quite a long time. 很长时间以来,我一直在跳动。 Please let me know if some one can shed some light on this. 请让我知道是否有人可以对此有所阐明。 Here's my code -- 这是我的代码-

    $aid=$_GET['id'];
    $sdata=XYZ::model()->findAll('a_id=:aid',array(':aid'=>$id));
    $qdata=ABC::model()->findAll('a_id=:aid',array(':aid'=>$id));
    $sql='insert into assignment_answers
                (a_id, s_id, q_id)
                values (:aid, :sid, :qid)';
            $command1=$connection->createCommand($sql);
            foreach($sdata as $sd)
            {
                foreach($qdata as $qd)
                {
                    $sid=$sd->id;
                    $command1->bindParam(":sid",$sid,PDO::PARAM_STR);
                    $qid=$qd->id;
                    $command1->bindParam(":qid",$qid,PDO::PARAM_STR);
                    $command1->bindParam(":aid",$aid,PDO::PARAM_STR);
                    $command1->execute();
                }
            }

You need 3 foreach loops: 1 for $adata, 1 for $sdata & 1 for $qdata. 您需要3个foreach循环:1个用于$ adata,1个用于$ sdata和1个用于$ qdata。

$sql='insert into assignment_answers
            (a_id, s_id, q_id)
            values (:aid, :sid, :qid)';
$command1=$connection->createCommand($sql);
foreach($adata as $ad)
{
    foreach($sdata as $sd)
    {
        foreach($qdata as $qd)
        {
            $command1->bindParam(":aid",$ad->id,PDO::PARAM_STR);
            $command1->bindParam(":sid",$sd->id,PDO::PARAM_STR);
            $command1->bindParam(":qid",$qd->id,PDO::PARAM_STR);
            $command1->execute();
        }
    }
}

I assumed you also have a $adata set like $sdata & $qdata. 我假设您还有$ adata集,例如$ sdata和$ qdata。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM