1

我使用此代码来验证用户。

public function verify_user($username, $password)
{
    $q = $this->db->where('username', $username)
        ->where('password', md5($password))
        ->limit(1)
        ->get('users');

    if ($q->num_rows() === 1) {
        echo '<pre>';
        print_r($q->row());
        echo '</pre>';
    } else {
        echo 'EMPTY';
    }
}

但是,当它等于 1 时,它什么也不显示。

Array
(
)

当我使用此代码修复 odbc num_rows = -1 问题时出现:CODEIGNITER Issue on line 40 until 67

编辑==============================

我想要达到的是这个

stdClass Object
(
    [id_user] => 2
    [username] => 114080077
    [password] => 0d5ccab9e7f4ae3fe040f143046e386c
)

我修改的代码是: 之前(STABLE VERSION)

/**
 * Number of rows in the result set
 *
 * @access  public
 * @return  integer
 */
function num_rows()
{
    return @odbc_num_rows($this->result_id);
}

之后(问题修复)

/**
 * Number of rows in the result set
 *
 * @return  int
 */
public function num_rows()
{
    if (is_int($this->num_rows))
    {
        return $this->num_rows;
    }
    elseif (($this->num_rows = @odbc_num_rows($this->result_id)) !== -1)
    {
        return $this->num_rows;
    }

    // Work-around for ODBC subdrivers that don't support num_rows()
    if (count($this->result_array) > 0)
    {
        return $this->num_rows = count($this->result_array);
    }
    elseif (count($this->result_object) > 0)
    {
        return $this->num_rows = count($this->result_object);
    }

    return $this->num_rows = count($this->result_array());
}
4

3 回答 3

1

if条件有错误,使用:

$q->num_rows()

并尝试使用

$q->result()反而->row()

于 2012-07-18T07:23:12.730 回答
1

通过用这个替换 system/database/drivers/odbc/odbc_result.php 来修复: 修复问题

于 2012-07-18T07:55:14.337 回答
1

您不能只使用CI_DB_odbc_result2.1 版本树的开发版本并保留其余内容。如果您不想全部替换,则需要从存储库中获取以下文件:

system/database/DB_driver.php
system/database/DB_result.php
system/database/drivers/odbc/odbc_driver.php
system/database/drivers/odbc/odbc_result.php

(假设您只使用 ODBC)

ODBC 结果类仍然可能存在问题,我将对此进行调查,但考虑到您的问题是指尚未发布的 CodeIgniter 版本 - 最好将任何问题报告发布到 CodeIgniter 论坛或GitHub 存储库。

于 2012-07-18T08:00:15.320 回答