【问题标题】:Discrepancy between CodeIgniter active record vs. MySQL queriesCodeIgniter 活动记录与 MySQL 查询之间的差异
【发布时间】:2016-06-12 16:12:59
【问题描述】:

当我使用 CodeIgniter 的活动记录运行此查询时:

    $user_name  = 'mememe';
    $test = $this->db->select('filename')
                        ->where('user', $user_name)
                        ->order_by('number','asc')
                        ->limit(4)
                        ->get('mytable')
                        ->row('filename');
    print_r($test); exit;

我在浏览器上得到了这个结果:

5f

但是当我在我的数据库管理器上运行相同的查询时:

SELECT `filename` FROM `mytable` WHERE `user` = 'mememe' ORDER BY `number` ASC LIMIT 4

我明白了(这实际上是正确的,也是我想要的):

5f
9f
10f
11f

为什么会这样?

【问题讨论】:

    标签: php mysql codeigniter activerecord


    【解决方案1】:

    来自 CI 文档

    行()

    此函数返回单个结果行。如果您的查询超过 一行,它只返回第一行。结果返回为 对象。

    Jusr 删除对row 方法的调用

     $test = $this->db->select('filename')
                        ->where('user', $user_name)
                        ->order_by('number','asc')
                        ->limit(4)
                        ->get('mytable');
    

    【讨论】:

      【解决方案2】:

      row() 方法仅返回表中的第一行,当您想要获取单个记录时使用它您还可以通过传递 行号 行来获取其他行的数据(行号)示例row(4)

      另一种方法

      $query = $this->db->query("SELECT filename FROM mytable WHERE `user` = '$user_name' ORDER BY `number` ASC LIMIT 4");
      
      foreach ($query->result() as $row)
      {
              echo $row->filename;          
      }
      

      【讨论】:

        猜你喜欢
        • 2012-11-15
        • 1970-01-01
        • 2016-04-06
        • 1970-01-01
        • 2016-03-10
        • 2012-01-23
        • 2018-07-11
        相关资源
        最近更新 更多