我想使用PDO而不是内置的数据库类。但是我怎么能这样做呢?我尝试在blog post中进行修改。我评论了system\database\DB.php
的一部分并添加了:
$DB = new PDO(
$params['dbdriver'].':host='.$params['hostname'].';dbname='.$params['database'],
$params['username'], $params['password']);
return $DB;
但是现在我的PHP代码在控制器中$this->load->database();
时崩溃了。那么我应该如何在CodeIgniter中使用PDO并使用PDO执行数据库查询?
我还尝试在Controller中使用此代码:
foreach($this->db->query('SELECT * FROM users') as $row) {
print_r($row);
}
但它不起作用。
答案 0 :(得分:16)
$stmt = $this->db->prepare("SELECT * FROM users");
$stmt->execute();
foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $row) {
print_r($row);
}
或者:
foreach ($this->db->query("SELECT * FROM users") as $row) {
print_r($row)."\n";
}
在此处了解有关3个PDO数据库调用的详情......
PDO Query
PDO Exec
PDO Prepare
编辑:同时检查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;