我有一个名为users的数据库表,其中包含一些密钥&userid,username,age&#39 ;,此表中还有一些记录,我想让它们像json一样,请看这个
{
"status":"1",
"msg":"success",
"userlist":[
{
"userid":"1",
"username":"chard",
"age":"22"
},
{
"userid":"2",
"username":"rose",
"age":"21"
},
{
"userid":"3",
"username":"niki",
"age":"25"
}
]
}
user_model.php文件,我写
function get_users()
{
$query = $this->db->get('users');
return json_encode($query->row_array());
}
user.php控制器文件,我写
function index_get()
{
$this->load->model('users_model');
$query = $this->users_model->get_users();
echo $query;
}
我可以得到结果,但这是错误的结果,只有这个
{ "userid":"1", "username":"chard", "age":"22" }
所以我应该怎么解决这个问题?感谢
答案 0 :(得分:2)
尝试使用$query->result_array()
代替$query->row_array()
您的模型功能会改变它:
function get_users()
{
$query = $this->db->get('users');
return $query->result_array();
}
在控制器方法
中function index_get()
{
$this->load->model('users_model');
$users = $this->users_model->get_users();
echo json_encode(array(
'status' => 1,
'msg' => 'success',
'userlist' => $users
));
}
答案 1 :(得分:0)
试试这个:
function get_users()
{
$query = $this->db->get('users');
return $query->result_array();
}
function index_get()
{
$this->load->model('users_model');
$users = $this->users_model->get_users();
echo json_encode(array(
'status' => 1,
'msg' => 'success',
'userlist' => $users
));
}
答案 2 :(得分:0)
You can use this:
function get_users()
{
$dataarr = array();
$res = array();
$this->db->start_cache();
$query = $this->db->get('users');
$this->db->stop_cache();
$this->db->flush_cache();
$groups = array();
if(!empty($res))
{
foreach ($query->result() as $row)
{
$dataarr[]=
array(
'userid' => $row['userid'],
'username' => $row['username'],
'age' => $row['age']
);
}
}
$query->free_result();
$res = array(
'status' => 1,
'msg' => 'success',
'userlist' => $dataarr
);
return json_encode($res);
}
答案 3 :(得分:0)
我个人更喜欢对象:
$data = $query->result();
echo json_encode($data);
这将返回一个对象数组,而不是一个数组数组(多维)。
您甚至可以将参数值传递给该方法,以将这些对象作为特定类的实例返回:
$data = $query->result('User_model');
我倾向于只使用魔术常量,无论如何我后来改变了类名:
$data = $query->result(__CLASS__);
这样你可以在你的javascript回调中访问你的对象:
var data = yourResponse;
yourResponse.userlist.forEach(function(user){
alert( user.username );
});