Php Codeigniter:使用PDO而不是mysql
在Codeigniter实现PDO的使用之前,是否有一种方法可以将其破解到稳定且安全的CI中?目前,我使用的不是db驱动程序,而是一个模型,它包含了我所有的PDO代码,比如Php Codeigniter:使用PDO而不是mysql,php,codeigniter,pdo,Php,Codeigniter,Pdo,在Codeigniter实现PDO的使用之前,是否有一种方法可以将其破解到稳定且安全的CI中?目前,我使用的不是db驱动程序,而是一个模型,它包含了我所有的PDO代码,比如prepare,fetch,execute,等等。其他人在做什么?试试我相信这是一款PDO驱动程序,它通过sparks实现了简单的即插即用。如果使用正确,CI既可靠又安全。如果不使用框架,使用PDO会更好,但与CI_数据库类相比,使用PDO并不一定会带来很大的好处 如果它真的让您感到困扰,您可以将mysql_*()函数替换为等
prepare
,fetch
,execute
,等等。其他人在做什么?试试我相信这是一款PDO驱动程序,它通过sparks实现了简单的即插即用。如果使用正确,CI既可靠又安全。如果不使用框架,使用PDO会更好,但与CI_数据库类相比,使用PDO并不一定会带来很大的好处
如果它真的让您感到困扰,您可以将mysql_*()
函数替换为等效的mysqli_*()
函数,但除非您进行了超优化,否则它不会提供任何明显的差异
需要注意的是,这实际上可以通过适当地设置dbtype来自动完成(如下面的Rocket注释)。这只是对有相同问题的任何人(包括我未来的自己)的跟进,请确保您正在加载的任何dbdriver都在php.ini中加载了正确的库
$db['default']['dbdriver'] = 'mysqli'; //MySQLi <-- mysqli.dll
$db['default']['dbdriver'] = 'mysql'; //MySQL <-- mysql.dll
$db['default']['dbdriver'] = 'pdo'; //PDO <-- pdo.dll
$db['default']['dbdriver']='mysqli'//MySQLi使用PDO驱动程序而不是mysql需要更改主机名和dbdriver,如下所示:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
在CodeIgniter 2.1.4+上使用MySQL数据库(编辑文件:/application/config/databases.php)
使用PDO:
$db['default']['hostname'] = 'mysql:host=localhost';
$db['default']['dbdriver'] = 'pdo';
使用MySQLi
$db['default']['hostname'] = 'localhost';
$db['default']['dbdriver'] = 'mysqli';
使用C.I的内置函数。CI以其速度快、重量轻著称,你不使用它的原因是什么。根本不使用PDO吗?他们用什么来实现便携性?MySQL适配器真的使用了MySQL_*()
函数吗?我很确定CodeIgniter在幕后使用PDO。编辑:MySQLi驱动程序使用MySQLi.*
。他们有一个你可以使用的工具。EDIT2:检查。对于可移植性,CI有一个抽象的DB API(CI\u数据库
),在驱动程序中实现了特定于DB的功能。MySQL驱动程序使用MySQL.*
。还有MySQLi
和PDO
驱动程序。它们都没有使用预先准备好的语句,因为参数占位符转义已经由CI完成。另一方面,我要说的是,CI的DB类和PDO接口之间的签名稍有不同这一事实令人恼火,但是没有Mysqli和PDO之间的区别那么烦人。只需在CodeIgniter的配置中将dbtype设置为Mysqli
。然后它将使用mysqli函数而不是mysql函数,这是一个很好的观点。我不知道这个选项。PDO对于Sentry这样的东西很好。使用CodeIgniter 3+,你现在必须使用$db['default']['hostname']='mysql:host=localhost;dbname=数据库_name'代码>或出现错误,说明“未选择数据库”。
$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
);