2013-02-09 2 views
0

Я использую CodeIgniter, чтобы получить один результат из БД, как это:CodeIgniter одного результата без цикла Еогеасп

$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-> результат (а)), в качестве объекта (по умолчанию);

$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") неверен –

+0

У меня нет никаких проблем с этим синтаксисом. Я использовал его для всех запросов через свое приложение. –

+0

Я его никогда не видел; Я просто вижу это: «Вы также можете передать строку result(), которая представляет класс для создания экземпляра для каждого объекта результата (обратите внимание: этот класс должен быть загружен)' –

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; 
Смежные вопросы