【问题标题】:How can I use PDO in CodeIgniter 2?如何在 CodeIgniter 2 中使用 PDO?
【发布时间】:2023-03-27 15:17:01
【问题描述】:

我想使用 PDO 而不是内置的数据库类。但是我该怎么做呢?我尝试进行blog post 中建议的修改。我注释掉了system\database\DB.php的一部分并补充了:

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

return $DB;

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

我也尝试在控制器中使用此代码:

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

但是没有用。

【问题讨论】:

  • 我相信您的设置中存在配置问题。到目前为止,该博客文章已为 100 多名开发人员逐步工作。也许数据库凭据不正确?否则,我试图在下面添加一些说明。将帮助您解决这个问题。

标签: php codeigniter pdo


【解决方案1】:
$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; 

【讨论】:

  • 从那篇博文中,您是否按照步骤 2 进行操作?确保return $DB; 仍然处于活动状态 -> 未注释掉。另外,您是否自动加载了数据库库?否则将$this->load->database(); 添加到您的构造函数中。
  • 这在您的 app/config/autoload.php 文件中吗? $autoload[‘libraries’] = array(‘database’); 如果是这样,请尝试从任何型号/控制器中删除 $this->load->database();。最后,确认您的数据库凭据是正确的。主机名、服务器、密码和数据库可能存在问题。
  • 最后的想法... 1) 包括$autoload[‘libraries’] = array(‘database’); 2) 检查您的数据库设置,如上所述 3) 如博客文章中所述,重新复制并粘贴到 DB.php 文件中。从 100 多名开发人员那里得到验证,这已经奏效了,所以一定是某处缺少配置......
  • 错误信息是什么?另外,您使用的是 Codeigniter 2.0 吗?
  • 没有错误信息,只是 HTTP 500 内部服务器错误。但我现在已经解决了。我从 CodeIgniter 2.0.1 升级到 2.0.2,现在你的把戏起作用了。谢谢!你很有帮助!
猜你喜欢
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 1970-01-01
  • 2011-08-06
  • 2020-07-27
相关资源
最近更新 更多