【问题标题】:Does Codeigniter require PDO?Codeigniter 是否需要 PDO?
【发布时间】:2015-11-06 12:47:20
【问题描述】:

这是我最近面临的挑战,

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

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

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

对吗?

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

【问题讨论】:

  • 根据我的经验,存在很多声明差异,因此更改连接方式(通过 PDO)不会让您更轻松。您可能仍然需要修复一个损坏的大网站。

标签: php codeigniter mysqli pdo codeigniter-2


【解决方案1】:

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

但是,如果您的客户使用自定义编写的 SQL 查询而不是 CI 的查询构建器方法,则没有抽象层能够帮助您进行迁移。
PDO 是一种低级抽象,它为不同的数据库驱动程序提供通用的函数/方法名称(即PDOStatement::fetch(),而不是为每个数据库提供不同的函数名称);它不处理 SQL 语法的差异。

【讨论】:

  • 太棒了! CI 的查询构建器方法是指 Active Record 类。我说的对吗?
  • 是的,但是“Active Record”是一个模式的名称,它在 CI 中被错误地使用,随后在版本 3 中重命名为“Query Builder”,这就是我这样说的原因。 :)
【解决方案2】:

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

不过,我认为这样的悲叹毫无意义。已经或将要做什么重要吗?做过的事,都得忍着。

【讨论】:

  • 谢谢。但同样如此,如果 Codeigniter 具有连接多个数据库的能力,并且它具有活动记录类功能,那么在什么情况下 PDO 会适合 Codeigniter?
  • PDO 对 CodeIgniter 中的任何事情都没有帮助,它只有在您编写原始 PHP 时才能帮助您。该框架在其之上有自己的抽象,因此您实际使用的 DB 驱动程序并不重要。
猜你喜欢
  • 2013-03-04
  • 2013-02-27
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多