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?_Php_Codeigniter_Mysqli_Pdo_Codeigniter 2 - Fatal编程技术网

Php Codeigniter是否需要PDO?

Php Codeigniter是否需要PDO?,php,codeigniter,mysqli,pdo,codeigniter-2,Php,Codeigniter,Mysqli,Pdo,Codeigniter 2,这是我最近面临的一个挑战 我的客户端网站是在Windows平台上使用Codeigniter框架,使用MSSQL数据库开发的。因此,每个文件都有一个直接的MSSQL查询来处理数据 现在他们想从MSSQL和Windows服务器迁移到MySQL和Linux服务器。我知道,我需要为数据库迁移做很多工作 但在这种情况下(我的假设),如果他们以前使用PDO作为数据库层,那么我不需要更改每个文件中的查询来将MSSQL移动到MySQL 是这样吗 我对PDO的假设可能很愚蠢。但请注意,在这种情况下,您的建议会很好

这是我最近面临的一个挑战

我的客户端网站是在Windows平台上使用Codeigniter框架,使用MSSQL数据库开发的。因此,每个文件都有一个直接的MSSQL查询来处理数据

现在他们想从MSSQL和Windows服务器迁移到MySQL和Linux服务器。我知道,我需要为数据库迁移做很多工作

但在这种情况下(我的假设),如果他们以前使用PDO作为数据库层,那么我不需要更改每个文件中的查询来将MSSQL移动到MySQL

是这样吗


我对PDO的假设可能很愚蠢。但请注意,在这种情况下,您的建议会很好

你的假设是错误的。PDO不是一个数据库抽象层,只是一个数据库接口。它不像条令那样为您创建SQL。因此,每个使用不同方言的查询都需要重写


不过,我看不出这样的悲叹有什么意义。做了什么或会做什么重要吗?做什么就做什么,你必须忍受它。

不,CodeIgniter不需要PDO。事实上,CodeIgniter2.x中的PDO支持处于“实验”状态

但是,如果您的客户机使用自定义编写的SQL查询而不是CI的查询生成器方法,则抽象层将无法帮助您进行迁移。

PDO是一种低级抽象,为不同的数据库驱动程序提供通用的函数/方法名(即
PDOStatement::fetch()
,而不是为每个数据库提供不同的函数名);它不处理SQL语法的差异。

根据我的经验,语句之间存在很多差异,因此更改它的连接方式(通过PDO)不会让您更轻松。你可能还有一个大的坏网站需要修复。太好了!CI的查询生成器方法表示活动记录类。我说的对吗?是的,但“活动记录”是一个模式的名称,该模式在CI中被错误地使用,随后在第3版中重命名为“查询生成器”,这就是为什么我用这种方式命名它的原因。:)非常感谢。但同样,如果Codeigniter能够连接多个数据库,并且它还具有活动记录类功能,那么在什么情况下PDO对Codeigniter会很好呢?PDO对Codeigniter中的任何内容都没有帮助,它只在您编写原始PHP时对您有帮助。该框架有自己的抽象,因此实际上使用哪个DB驱动程序并不重要。