php – Codeigniter PDO模拟准备

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Codeigniter PDO模拟准备脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在阅读,人们说在设置与数据库的连接时应该添加

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

脚本宝典总结

以上是脚本宝典为你收集整理的php – Codeigniter PDO模拟准备全部内容,希望文章能够帮你解决php – Codeigniter PDO模拟准备所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。