Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter:使用PDO而不是mysql_Php_Codeigniter_Pdo - Fatal编程技术网

Php Codeigniter:使用PDO而不是mysql

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_*()函数替换为等

在Codeigniter实现PDO的使用之前,是否有一种方法可以将其破解到稳定且安全的CI中?目前,我使用的不是db驱动程序,而是一个模型,它包含了我所有的PDO代码,比如
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
);