如何在CodeIgniter 2中使用PDO?

Jon*_*nas 22 php pdo codeigniter

我想使用PDO而不是内置的数据库类.但是我怎么能这样做呢?我试图在博客文章中进行修改.我评论了一部分,system\database\DB.php并补充说:

$DB = new PDO(
$params['dbdriver'].':host='.$params['hostname'].';dbname='.$params['database'],
$params['username'], $params['password']);

return $DB;
Run Code Online (Sandbox Code Playgroud)

但是现在我的PHP代码崩溃,如果我$this->load->database();在控制器中.那么我应该如何在CodeIgniter中使用PDO并使用PDO执行数据库查询?

我也尝试在Controller中使用此代码:

foreach($this->db->query('SELECT * FROM users') as $row) {
    print_r($row);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

csi*_*csi 16

$stmt = $this->db->prepare("SELECT * FROM users");  
$stmt->execute();  
foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $row) {
      print_r($row);
}
Run Code Online (Sandbox Code Playgroud)

要么:

foreach ($this->db->query("SELECT * FROM users") as $row) {  
     print_r($row)."\n";
}    
Run Code Online (Sandbox Code Playgroud)

在此了解有关3个PDO数据库调用的更多信息

PDO查询
PDO Exec
PDO准备

编辑:还要检查您的app/config/database.php文件以获取以下设置:

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

$db['default']['hostname'] = 'YOURHOSTNAME';  
$db['default']['username'] = 'YOURUSERNAME';  
$db['default']['password'] = 'YOURPASSWORD';  
$db['default']['database'] = 'YOURDATABASE';  
$db['default']['dbdriver'] = 'mysql';  
$db['default']['dbprefix'] = '';  
$db['default']['pconnect'] = TRUE;  
$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; 
Run Code Online (Sandbox Code Playgroud)

  • 没有错误消息,只有HTTP 500内部服务器错误.但我现在已经解决了.我从CodeIgniter 2.0.1升级到2.0.2,现在你的诀窍就行了.谢谢!你很有帮助! (4认同)