CodeIgniter - 数据库结果数组,但只有一行
Posted
技术标签:
【中文标题】CodeIgniter - 数据库结果数组,但只有一行【英文标题】:CodeIgniter - database result array but only one row 【发布时间】: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];
说实话,这很丑陋。如前所述,我宁愿不使用对象。
【问题讨论】:
你为什么不想使用对象?? 使用行法。 codeigniter.com/user_guide/database/results.html 也很好奇,比如@Mischa,你为什么会回避对象?尤其是在 MVC 框架中。 对象很难看?开发对你来说并不容易...... 难看为什么你这么认为,为什么你不想在面向对象的语言中使用对象? 【参考方案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 方法;这是最好的。
【讨论】:
以上是关于CodeIgniter - 数据库结果数组,但只有一行的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter:foreach 方法或结果数组?? [模型+视图]