ci框架在查询数据库,如何返回一个一维数组,我查的是多条数据的一个字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ci框架在查询数据库,如何返回一个一维数组,我查的是多条数据的一个字段相关的知识,希望对你有一定的参考价值。
ci框架在查询数据库,如何返回一个一维数组,我查的是多条数据的一个字段。多条数据,但是只查一个字段,应该是返回一个一维的数组
直接取一维数组是取不到了只能把二维转成一维的了:
用result_array取到二维数组
再用array_column,转为一维数组
例:
$sql = 'select name from user';
$result = $this->db->query($sql)->result_array();
$one = array_column($result, 'name');
print_r($one);//这个就是一维数组了 参考技术A 只有返回记录,没有返回字段的。查询一个字段,result_array返回的就是只包含此字段值的所有记录(二维数组)。想要自己扩展一下吧 参考技术B row_array是一条.或者用limit 参考技术C $query->row();$query->row_array();多看手册。
如何使用代码点火器活动记录查询返回一维数组中的表字段
【中文标题】如何使用代码点火器活动记录查询返回一维数组中的表字段【英文标题】:How to return a table field in single dimensional array with code-igniter active record query 【发布时间】:2015-08-18 14:22:02 【问题描述】:我正在从 user_roles 表中获取已登录用户的用户角色 ID。一个用户可以有多个角色,我在多维数组中得到结果。我正在使用 foreach 循环返回单个数组中的 role_ids 以在其他查询 IN 子句中使用。代码点火器中有没有办法检索一维数组中的角色 ID。这是我到目前为止所做的:
获取角色的 Modal 类函数
$select_fields = 'ur.role_id AS role_id';
$this->db->select($select_fields, FALSE);
$this->db->from('users_roles AS ur');
$this->db->where('ur.user_id', $user_id);
$query = $this->db->get();
if($query->num_rows())
return $query->result_array();
return FALSE;
我得到的返回数组:
Array
(
[0] => Array
(
[role_id] => 1
)
[1] => Array
(
[role_id] => 2
)
)
我需要将上述返回数组传递给其他 SQL IN 语句,因为我必须手动将数组更改为:
$select_fields = 'ur.role_id AS role_id';
$this->db->select($select_fields, FALSE);
$this->db->from('users_roles AS ur');
$this->db->where('ur.user_id', $user_id);
$query = $this->db->get();
if($query->num_rows())
$result = $query->result_array();
$user_role_ids = array();
foreach ($result as $key => $value)
$user_role_ids[] = $value['role_id'];
return $user_role_ids;
return FALSE;
我得到的返回数组:
Array
(
[0] => 1
[1] => 2
)
【问题讨论】:
【参考方案1】:如果你安装了最新的php,你可以使用array_column函数
喜欢这个
function somename()
...
...
return array_column($query->result_array(),'role_id');
或
function somename()
...
...
return array_map(function($_)return $_['role_id'];, $query->result_array());
最终你可以在你的控制器上调用
$this->db->where_in('some_fieldname', $this->somename() );
【讨论】:
【参考方案2】:只要把它当作
$select_fields = 'group_concat(ur.role_id) AS role_id';
$this->db->select($select_fields, FALSE);
$this->db->from('users_roles AS ur');
$this->db->where('ur.user_id', $user_id);
$query = $this->db->get();
if($query->num_rows())
return $query->result_array();
return FALSE;
这会给你一个数组
Array
(
[0] => Array
(
[root] => 1,2,3,4
)
)
这样您就可以轻松地在IN
语句中传递该值
【讨论】:
以上是关于ci框架在查询数据库,如何返回一个一维数组,我查的是多条数据的一个字段的主要内容,如果未能解决你的问题,请参考以下文章
CI codeigniter 查询 db query 返回 二维数组 返回 第一条记录
004.CI4框架CodeIgniter, 配置mysql数据库,并进行数据库查询