$ query-> result()返回空数组

时间:2017-02-21 08:29:28

标签: php mysql codeigniter activerecord codeigniter-2

我现在使用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

这里缺少什么/问题?

6 个答案:

答案 0 :(得分:1)

我找到了这个问题。发生这种情况是因为我的应用程序使用PDO DB Driver。不是MySQL驱动程序。

$listArray

所以我改变了我的模型以支持它。

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

现在它工作正常。

  

我很抱歉你的时间。非常感谢你   试图提供帮助。

答案 1 :(得分: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;
}
  

您没有格式化查询数组。格式化它。

答案 2 :(得分:0)

简单添加
    $ query = $ this-> db-> get() - > result();   在你的代码中

$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;

}

答案 3 :(得分:0)

if ($query->num_rows() > 0)然后返回$query->result(),以object格式返回结果。就像这样..

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

然后使用arrow(->)运算符检索所需的值。 有关详情,请参阅此处Codeigniter Result Formats

答案 4 :(得分: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;
}

答案 5 :(得分: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;
}