在Codeigniter实现PDO的使用之前,是否有办法将其破解为稳定且安全的CI?目前,我使用的是模型而不是使用数据库驱动程序,而是使用了我的所有PDO代码,例如prepare
,fetch
,execute
等。你们其他人在做什么?
答案 0 :(得分:6)
使用 MySQL 数据库 CodeIgniter 2.1.4 + (编辑文件:/application/config/databases.php)。
使用PDO:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
使用MySQLi
$db['default']['hostname'] = 'localhost';
$db['default']['dbdriver'] = 'mysqli';
答案 1 :(得分:6)
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => 'mysql:host=127.0.0.1; dbname=****yourdatabasename*****; charset=utf8;',
'hostname' => '',
'username' => 'root',
'password' => '******yourpassword*******',
'database' => '',
'dbdriver' => 'pdo',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
答案 2 :(得分:3)
如果使用正确,CI既可靠又安全。使用PDO虽然不使用框架会更好,但不一定会对CI_Database类产生很大的好处。
如果它真的困扰你,你可以替换等效mysql_*()
函数的mysqli_*()
函数,但它确实不会提供任何可辨别的差异,除非你是超优化。
应该注意,这实际上可以通过适当地设置dbtype自动完成(如下面的Rocket注释)。
答案 3 :(得分:3)
使用PDO驱动程序而不是mysql需要更改主机名和dbdriver,如下所示:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
答案 4 :(得分:0)
尝试php-activerecord我相信这个使用PDO驱动程序,它是一个简单的即插即用的火花。
答案 5 :(得分:0)
只需跟进任何有同样问题的人(包括我未来的自己),请确保您加载的任何dbdriver都在php.ini中加载了正确的库
$db['default']['dbdriver'] = 'mysqli'; //MySQLi <-- mysqli.dll
$db['default']['dbdriver'] = 'mysql'; //MySQL <-- mysql.dll
$db['default']['dbdriver'] = 'pdo'; //PDO <-- pdo.dll
无法加载正确的dll会导致CodeIgniter失败并显示空白页。