1

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

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

谢谢!

4

3 回答 3

1

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

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

于 2012-06-03T02:15:04.627 回答
1

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

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

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

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

于 2012-06-03T10:47:33.850 回答
0

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

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

于 2012-06-03T02:32:16.073 回答