2015-10-14 3 views
1

Я использую ниже функции, чтобы получить данные из БД MySQLфункция Codeigniter Модель получить данные из MySQL

Код компресс из моего mododel.php является:

function get_all_devices($user_id = NULL) { 
    if ($user_id) { 
     $sql = " 
      SELECT * 
      FROM {$this->_db} 
      WHERE user_id = " . $this->db->escape($user_id) . " 

     "; 

     $query = $this->db->query($sql); 

     if ($query->num_rows()) { 
      return $query->row_array(); 
     } 
    } 

    return FALSE; 
} 

Структурные смещ_по_столбцам DB: id, user_id, device, value

Но его извлечение только последней записи. Как я могу получить все записи в массиве.

ответ

0

использование result_array() вместо row_array()

function get_all_devices($user_id = NULL) { 
    if ($user_id) { 
     $sql = " 
      SELECT * 
      FROM {$this->_db} 
      WHERE user_id = " . $this->db->escape($user_id) . " 

     "; 

     $query = $this->db->query($sql); 

     if ($query->num_rows() > 0) { 
      return $query->result_array(); 
     } 
    } 

    return FALSE; 
} 

он будет возвращать все записи. row_array() возвращать только одну запись

0

Ok, я реорганизовать код и изменять при необходимости:

function get_all_devices($user_id = NULL) { 
     if ($user_id) { 
      $this->db->where('user_id', $user_id);// you don't have to escape `$user_id` value, since `$this->db->where()` escapes it implicitly. 
      $query = $this->db->get($this->_db); //executes `select *` on table `$this->_db`, and returns.  
      //if you want to get only specific columns, use $this->db->select('col1, col2'), otherwise you don't need to specify it, since it implicitly selects everything.  
      if ($query->num_rows()) { 
       return $query->result_array();//use result_array() to retrieve the whole result instead of row_array() which retrieves only one row; 
      } 
     } 

     return FALSE; 
    } 
Смежные вопросы