Как я могу использовать PDO в CodeIgniter 2? - PullRequest
22 голосов
/ 04 мая 2011

Я бы хотел использовать PDO вместо встроенных классов базы данных.Но как я могу это сделать?Я попытался сделать изменения, предложенные в сообщении в блоге .Я закомментировал часть 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(); в контроллере.Итак, как мне использовать PDO и выполнять запросы к базе данных, используя PDO в CodeIgniter?

Я также пытался использовать этот код в контроллере:

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

, но он не работал.

1 Ответ

16 голосов
/ 04 мая 2011
$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
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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...