从resut数组循环查询

时间:2016-07-15 16:21:22

标签: php codeigniter loops select

我在MODEL中查询,从table1中选择包含数据的数据:

Column NOPE

DATA1
数据2
DATA3

然后我想从table1的结果中选择所有数据,但只获取第一行:

NOPE |总
nope1 | 20pax

如何循环所有行以在我的视图中选择并显示所有行?所以我得到的所有行都是这样的: NOPE TOTAL
nope1 20pax
nope2 30pax
nope3 25pax
nope4 40pax

这是我的模特:

function test()
{
$query = $this->db->query("select nope from tb1");

if ($query->num_rows() > 0)
{
foreach ($query->result_array() as $row)
    {

        $nopen=$row['nope'];
        $query2=$this->dbmssql->query("
                                        select nope, 
                                        count(name) as total 
                                        from trans 
                                        where nope ='$nopen' 
                                        and date='2016-04-20'
                                        group by nope ");
        return $query2->result_array();

    }

}       

}

我的视图是:

                    <tbody> 
                <?php 
                $no=0;
                foreach ($res as $row) { $no++?>                    
                <tr>
                    <td><?php echo $no;?></td>
                    <td><?php echo $row['nope'] ;?></td>
                    <td><?php echo $row['total'];?> PAX</td>
                </tr>       
                <?php 
                } ?>    
                </tbody>

请帮助我,非常感谢。

2 个答案:

答案 0 :(得分:0)

你只得到第一行,因为你的foreach循环只执行一次,因为循环在return语句处退出。您需要将结果数组赋值给变量并在循环后返回该变量。

以下是您修改的代码,用于对$ query中的每个记录执行foreach循环。

function test()
{
   $query = $this->db->query("select nope from tb1");

   if ($query->num_rows() > 0)
   {
      foreach ($query->result_array() as $row)
      {

        $nopen=$row['nope'];
        $query2=$this->dbmssql->query("
                                    select nope, 
                                    count(name) as total 
                                    from trans 
                                    where nope ='$nopen' 
                                    and date='2016-04-20'
                                    group by nope ");
          $all_records[]=$query2->result_array();

       }
       return $all_records;
  }       

}

答案 1 :(得分:0)

万分感谢你,萨兰先生......

最后,我已经按照您的代码,并使用以下命令对我的视图进行更改:

                    <?php 
                $no=0;

                foreach ($res as $row) 
                { 
                $no++;
                ?>                  
                <tr>
                    <td><?php echo $no;?></td>
                    <td><?php echo $row[0]['nope'] ;?></td>
                    <td><?php echo $row[0]['total'];?> PAX</td>
                </tr>       
                <?php

                } ?>

现在我得到了所有记录的结果,...你是我的英雄......