2017-02-21 15 views
-1

Я использую активные записи Codeigniter в течение некоторого времени, и это самая смешная ошибка, которую я получил.

Мой запрос

$this->db->select('*'); 
$this->db->from('my_table'); 
$this->db->where('is_active', 1); 

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

if ($query->num_rows() > 0) { 
    //return $query->result(); 
    return $query; 
} else { 
    return FALSE; 
} 

, когда я использую $query->result(); Он пуст. Когда я использую return $query; результат, как показано ниже,

CI_DB_pdo_result Object 
(
    [num_rows] => 21 
    [conn_id] => PDO Object 
     (
     ) 

    [result_id] => PDOStatement Object 
     (
      [queryString] => SELECT * FROM my_table WHERE is_active = 1 
     ) 

    [result_array] => Array 
     (
     ) 

    [result_object] => Array 
     (
     ) 

    [custom_result_object] => Array 
     (
     ) 

    [current_row] => 0 
    [row_data] => 
) 

Граф является

[num_rows] => 21

что отсутствует/проблема здесь?

ответ

0

Попробуйте

$this->db->select('*'); 
$this->db->from('my_table'); 
$this->db->where('is_active', 1); 

$query = $this->db->get(); 
$result = $query->result_array(); 

if (count($result) > 0) { 
    return $result; 
} 
else{ 
    return FALSE; 
} 

Вы не форматированием массива запросов. Так отформатируйте его.

0

просто добавить
$ запроса = $ this-> db-> Get() -> результат(); в коде

$this->db->select('*'); 
$this->db->from('my_table'); 
$this->db->where('is_active', 1); 

$query = $this->db->get()->result(); 

if ($query->num_rows() > 0) { 
//return $query->result(); 
     return $query; 
} else { 
return FALSE; 

}

+0

Пробовал все возможные способы не включая это тоже ... Не повезло ... –

+0

$ this-> db-> select ('*'); $ this-> db-> from ('my_table'); $ this-> db-> где ('is_active', 1); return $ this-> db-> get() -> result(); попробуйте это –

0

if ($query->num_rows() > 0) затем возвращают $query->result(), который возвращает результаты в object format.Like это ..

if ($query->num_rows() > 0) { 
    return $query->result(); 
} else { 
    return FALSE; 
} 

Затем с помощью arrow(->) оператора извлекаемых требуемых значений. Подробнее см. Здесь Codeigniter Result Formats

+0

Пробовал. Но такой же результат. Возвращает и пустой массив. –

+0

Что выводится на 'print_r ($ query-> result_array())'? –

+0

напечатать пустой массив. 'Array ( )' –

1

Я нашел проблему. Это происходит потому, что мое приложение использует драйвер PDO DB. Не драйвер MySQL.

$db['default']['dbdriver'] = 'pdo'; 

Поэтому я изменил свою модель, чтобы поддержать это.

$sql = "SELECT * FROM my_table WHERE is_active = 1"; 
$stmt1 = $this->db->conn_id->prepare($sql); 
$stmt1->execute(); 
return $stmt1->fetchAll(PDO::FETCH_ASSOC); 

Теперь он работает нормально.

Мне очень жаль ваше время. И большое спасибо за , пытающийся помочь.

0

Если вы хотите получить результат, вы должны использовать функцию row() или result().

$this->db->select('*'); 
$this->db->from('my_table'); 
$this->db->where('is_active', 1); 

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

if ($query->num_rows() > 0) { 
    //return $query->result(); 
    return $this->db->get()->result(); 
    //return $query; 
} else { 
    return FALSE; 
} 
0
 $this->db->select('*'); 
$this->db->from('my_table'); 
$this->db->where('is_active', 1); 

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

$i = 0; 
foreach ($query->result() as $row) { 
    $i++; 
    $data['id'] = $row->id; 
    $data['username'] = $row->username; 
} 


if ($i > 0) { 
    return $data; 
}