我使用codeigniter从db获取单个结果,如下所示:
$user = $this->db->query("SELECT * FROM users LIMIT 1");
然后我获取返回的对象并以此方式循环:
foreach ($user->result() as $row) { ... }
可以想象,使用循环没有意义,因为只有一个结果。有没有办法在不循环的情况下获取用户参数?这一行中的一些东西:
echo $user['name'];
提前致谢。
答案 0 :(得分:8)
$user = $this->db->query("SELECT * FROM users LIMIT 1")->row();
将其作为对象(echo $user->name;
)
$user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();
for have是一个数组(echo $user['name'];
);
$user = $this->db->limit(1)->get('users')->row(); //or ->row_array();
使用AR;
$row = $user->first_row();
从结果集中获取第一行($ this-> db-> result()),作为对象(默认);
$row = $user->first_row('array');
从结果集中获取第一行,作为数组;
$row = $user->row_array(1);
返回一个特定的行(首先,在这种情况下。只需传递该行的<N>
)。适用于$user->row(1);
答案 1 :(得分:1)
这将是:
$user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array();
此处有更多详情:http://ellislab.com/codeigniter/user-guide/database/results.html
答案 2 :(得分:0)
做这样的事情
//in the model
$query = $this->db->query("your query");
$row = $query->row();
if (isset($row))
return $row;
}else{
return false;
}
然后回复你的结果
echo $row->username;
如果您想将其传递给视图
//in the controller
$this->load->model('somemodel');
$hm=$this->somemodel->somemethod();
$data['query']=$hm;
$this->load->view('path/to/view',$data);
然后以同样的方式回应
echo $row->username;
答案 3 :(得分:-1)
假设您的模型函数就像这样.......
public function get_users()
{
$query = "Select * from users limit 1";
$res=$this->db->query($query);
if($res->num_rows()>0){
return $res->result("array");
}
return array();
}
假设您在控制器函数中调用此模型,如此
$users = $this->model_file->get_users();
然后你可以像这样回复echo $users[0]['user_name'];