【问题标题】:CodeIgniter - database result array but only one rowCodeIgniter - 数据库结果数组,但只有一行
【发布时间】:2012-05-02 03:15:45
【问题描述】:

我正在寻找一种从数据库查询中返回数组的方法,但仅限于第一行。我不想使用对象..

我目前的解决方案:

//Gather
$data = $this->db->from('view')->where('alias', $alias)->get()->result_array();

//Collect the first row only
$data = $data[0];

说实话,这很丑陋。如前所述,我宁愿不使用对象。

【问题讨论】:

  • 你为什么不想使用对象??
  • 也很好奇,比如@Mischa,你为什么会回避对象?尤其是在 MVC 框架中。
  • 对象很难看?开发对你来说并不容易......
  • 难看为什么你这么认为,为什么你不想在面向对象的语言中使用对象?

标签: php database arrays codeigniter row


【解决方案1】:

改用row() 方法:

$data = $this->db->from('view')->where('alias', $alias)->get()->row();

[哦,你不想使用对象。 row_array() 然后。但是考虑对象。]

【讨论】:

    【解决方案2】:

    你可以这样做:

    $data = $this->db->from('view')->where('alias', $alias)->get()->row_array();
    

    这与 minitech 的答案相同,只是它返回一个数组(如您所愿)而不是一个对象。

    【讨论】:

      【解决方案3】:

      您可以使用 row_array() 函数从单行中获取数据。将该行指定为参数。

      例如,要获取结果的第一行,请执行以下操作:

      $this->db->from('view')->where('alias', $alias)->get()->result_array(0);
      

      【讨论】:

        【解决方案4】:

        如果您只想将第一行作为数组获取,您也可以使用以下代码:

        $data = $this->db->from('view')->where('alias', $alias)->get()->first_row('array');
        

        但是如果你真的只想得到 1 个结果,总是使用 select('TOP 1 ....') 因为这个方法提高了你的查询返回时间性能。当您直接使用 get() 时,它会尝试返回整个数据,而不仅仅是第一行。然后它显示你想要的(第一行)。但是如果你使用 TOP 1 方法;这是最好的。

        【讨论】:

          猜你喜欢
          • 2013-05-18
          • 2015-04-08
          • 1970-01-01
          • 2021-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-25
          • 1970-01-01
          相关资源
          最近更新 更多