加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Codeigniter PDO模拟准备

发布时间:2020-12-13 17:23:14 所属栏目:PHP教程 来源:网络整理
导读:我一直在阅读,人们说在设置与数据库的连接时应该添加 $dbConnection-setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 告诉PDO使用真正的PDO语句禁用模拟的预准备语句. 如何在Codeigniter中设置它? 我正在使用codeigniter 2.1.3 编辑1: 我现在如何连接:
我一直在阅读,人们说在设置与数据库的连接时应该添加

$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

告诉PDO使用真正的PDO语句禁用模拟的预准备语句.

如何在Codeigniter中设置它?

我正在使用codeigniter 2.1.3

编辑1:

我现在如何连接:

$active_group = 'default';
$active_record = FALSE;

$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['username'] = 'XXXXXXX';
$db['default']['password'] = 'XXXXXXXXXX';
$db['default']['database'] = 'XXXXXXX';
$db['default']['dbdriver'] = 'pdo';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

一个查询示例是:

function validate_login()
    {
    $bcrypt = new Bcrypt(17);   
    $sql = "SELECT * FROM users WHERE username = :user";
    $loginQ = $this->db->conn_id->prepare($sql);
    $loginQ->bindParam(':user',$this->input->post('username'));
    $loginQ->execute(); 
    $row = $loginQ->fetch();
    $hash = $row['password'];
    $password = $this->input->post('password');
    $verified = $bcrypt->verify($password,$hash);

        if($bcrypt->verify($password,$hash))
        {
            return $loginQ;
        }
    }

解决方法

system / database / drivers / pdo在第96行你可以编辑错误模式,你可以添加模拟准备到false.现在大多数数据库服务器都可以利用这一点,我知道mysql确实如此.希望这有助于任何其他人.

function db_connect()
    {
        $this->options['PDO::ATTR_ERRMODE'] = PDO::ERRMODE_EXCEPTION;
        $this->options['PDO::ATTR_EMULATE_PREPARES'] = FALSE;

        return new PDO($this->hostname,$this->username,$this->password,$this->options);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读