2013-02-09 86 views
0

我使用笨从数据库获取一个结果,这样一个结果:笨而不foreach循环

$user = $this->db->query("SELECT * FROM users LIMIT 1"); 

我然后得到返回的对象和循环槽它,像这样:

foreach ($user->result() as $row) { ... } 

正如你可以想象的那样,使用循环没有意义,因为只有一个结果。有没有办法让用户参数没有循环?这条线之间的东西:

echo $user['name']; 

在此先感谢。

回答

7
$user = $this->db->query("SELECT * FROM users LIMIT 1")->row(); 

具有它作为一个对象(echo $user->name;

$user = $this->db->query("SELECT * FROM users LIMIT 1")->row_array(); 

具有是作为阵列(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

假设例如模型的功能是这样的.......

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'];

+0

我认为$ res-> result(“array”)是错误的 – 2013-02-09 13:43:15

+0

我没有遇到任何与这种语法有关的问题。我通过我的应用程序使用它进行所有查询。 – 2013-02-09 13:48:03

+0

我从来没有见过它提到;我只是看到:'你也可以传递一个字符串给result(),它代表一个类为每个结果对象实例化(注意:这个类必须被加载)' – 2013-02-09 13:55:33

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;