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); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |