【问题标题】:php/mysql switch from mysql to mysqli or pdo, possible to do graduallyphp/mysql 从 mysql 切换到 mysqli 或 pdo,可以逐步进行
【发布时间】:2012-06-03 01:57:41
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: php mysql refactoring pdo mysqli


    【解决方案1】:

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

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

    【讨论】:

    • 我对框架的经验是,它们对于设置它的程序员来说是有意义的,但如果它们不是众所周知的标准,它们会给新团队成员或其他需要使用它们并执行的人带来问题不知道或者喜欢框架有没有好的标准的?此外,真的有办法将逻辑与 dbase 访问与标记完全分开吗?我已经将主要标记分开了,但是为了区分评论和评论之类的东西,你似乎总是以 if thens 结尾,将标记与逻辑混合在一起。
    【解决方案2】:

    如果我遇到你的情况,我会借此机会全面改进应用程序的架构。

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

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

    没有必要一路走到MVC,但是当你把应用程序的不同职责分开:表示逻辑、模板、路由、业务逻辑、数据访问逻辑等时,你最终会得到一些类似于MVC的东西.

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-01-31
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-06
        • 2014-07-12
        • 2019-11-07
        • 1970-01-01
        相关资源
        最近更新 更多