php / mysql从mysql切换到mysqli或pdo,可以逐步完成

时间:2012-06-03 01:57:42

标签: php mysql refactoring pdo mysqli

我有一个使用大量mysql_query调用的Web应用程序 - 主要是因为我在教程和其他地方找到了这些,我学会了如何运行查询。许多人一直建议我切换到mysqli,因为mysql会在某些时候消失,但是,我已经读过,制作这个开关要比在最后添加i要困难得多,并且需要重写所有代码。

如果我问这个开关是值得的,我想几乎每个人都会说是,因为坚持使用mysql似乎是少数人的观点。所以我的问题是,是否有可能逐步切换到mysqli,即逐渐更新调用或页面,或者更好地冻结旧网站并重做整个mysqli或pdo网站。当我说得更好时,我会考虑重做整个网站所涉及的所有工作和成本。显然,将资源分配给网站上的新功能和事物是有吸引力的,而不是使用旧的mysql重做那些工作正常的东西。

谢谢!

3 个答案:

答案 0 :(得分:2)

从PHP的通知中,他们不会正式弃用mysql_*扩展名,直到至少PHP 5.5 / 6.0,因此在这些函数完全消失或E_DEPRECATED错误开始出现之前,您有时间重写脚本。 http://news.php.net/php.internals/53799

也许如果你的代码是意大利面并且没有组织,那么它是重新编码/重构的时候。 MVC很棒,因为控制器模型所有查询都在一个地方和一个地方。数据库连接/ CRUD位于单个对象属性中。

答案 1 :(得分:1)

如果我在你的情况下,我会把它作为一个完整改进应用程序架构的机会。

您应该首先将代码(仅处理数据库交互)与应用程序的其余部分分开。最好的方法是转向像DataMapper这样的结构。

此时切换到PDO或MySQLi将是一项简单的任务。

没有必要一直到MVC,但是当你分离应用程序的不同职责时:表示逻辑,模板,路由,业务逻辑,数据访问逻辑等,你会得到一些模仿MVC的东西。

答案 2 :(得分:0)

关于mysql改编的第一点。最好的选择是最初使用一些自己的适配器/包装器。例如,使用query(),rowCount(),eth方法编写类MyMysql。此时不会有关于在mysql / mysqli / pdo之间切换的问题。

关于转换的第二点。 mysql和mysqli之间没有太大的区别。是的,它不仅仅是在单词结尾处使用“i”字母,而且大多数查询非常相似。在我的记忆中,例如没有mysql_fetch_assoc等价物(但是这里有mysql_fetch_array)。可能比使用“mysql” - >“mysqli”的常规模式更难,但不是太难。所以不要害怕mysqli - 这是mysql驱动程序的逻辑继续。