Codeigniter查询显示行数为1,但行返回空数组


Codeigniter query showing num rows of 1 but row returns empty array

我在CI 2.2中有以下查询:

$query = $this->db->select($this->identity_column . ', username, email, id, password, active, last_login')
    ->where($this->identity_column, $this->db->escape_str($identity))
    ->limit(1)
    ->get($this->tables['users']);

然后运行这个:

if ($query->num_rows() === 1)
{
    $user = $query->row();
}

num_rows()返回1,所以我进入if语句,但$query->row()返回一个空数组。我已经运行了生成的SQL,它实际上抓取了正确的行。

查询对象如下所示:

object(CI_DB_pdo_result)#381 (8) { ["num_rows"]=> int(1) ["conn_id"]=> object(PDO)#380 (0) { } ["result_id"]=> object(PDOStatement)#387 (1) { ["queryString"]=> string(115) "SELECT username, username, email, id, password, active, last_login FROM users WHERE username = 'CORAIR4JK' LIMIT 1" } ["result_array"]=> array(0) { } ["result_object"]=> array(0) { } ["custom_result_object"]=> array(0) { } ["current_row"]=> int(0) ["row_data"]=> NULL }

这不是驱动程序的问题,不要从PDO切换到旧的MySQL,因为PDO更安全,要得到结果,你必须使用下面,

if ($query->num_rows() === 1)
{
    $user = $query->result_array();
}

这将把所有的数据库结果加载到$user中,并使其成为一个数组。

享受! !