PHP 5.5.x中不推荐使用的MySQL扩展

时间:2013-08-19 12:35:42

标签: php mysql mysqli

根据PHP manual以及PHP 5.5.x上互联网上的许多来源,不推荐使用整个原始MySQL扩展。我有一个非常强大的Web应用程序,我的协会中有很多学生使用它,但是当我不知道很多PHP时我就开始研究它了,我从来没有打过用MySQLi_ *或PDO_MySQL来改变MySQL_ *扩展名。

Web应用程序已完成,所有系统都在运行,可能无法使用新功能进行增强,因此我的问题是:我是否需要花些时间更改所有mysql_ *调用并使用mysqli_ *调用进行切换。如果我将所有内容都放在已弃用的mysql_ *扩展名中,我的应用程序是否会在互联网上无法访问?

5 个答案:

答案 0 :(得分:3)

  

如果我将所有内容都放在已弃用的mysql_ *扩展名中,我的应用程序是否会在互联网上无法访问?

只有当运行它的服务器升级到不支持旧API的PHP版本时,您的应用程序才会中断。如果您的服务器未升级到PHP 5.5,那么您的应用程序将无限期地继续运行。在这方面,外部互联网上的任何其他内容都不会影响它;只升级到您自己的服务器是相关的。

目前,php 5.4仍然受到积极支持,因此您可以愉快地继续使用该版本,而无需担心您的代码突然崩溃。

但是,在将来的某个时候,由于某种原因,您需要升级到PHP 5.5或更高版本。 PHP 5.4将成为寿命终止,建议移至5.5。或者,如果您使用的是共享主机帐户,您甚至可能对PHP版本没有任何选择。所以,是的,您应该期望当前的代码不能使用您当时使用的PHP版本。最终

因此,虽然没有迫切需要进行转换,但您应该尽快考虑这样做。你不想想要的一件事就是在事情发生的那一天到来,并发现自己陷入困境。

5.5刚刚发布,所以你可能有几年才能成为可用的最低版本,但请接受我的建议;你不想等到最后一刻。

  

我是否应该花些时间更改所有mysql_ *调用并使用mysqli_ *调用切换它们。

您声明您的应用“非常强大”并且“可能无法增强”。所以它基本上处于长期维护阶段。

鉴于这些标准,我会说是的,简单地切换到mysqli lib是明智之举。所需的更改非常简单(听起来您已经掌握了已经做的事情),并且对软件的其余部分几乎没有任何影响。

如果您的代码非常强大并且编写得很好,那么您将使其具有某种类型的数据库层,这意味着您无需做太多事情。

如果结构不太好,可能会在代码周围散布很多mysql_query()个调用,在这种情况下可能需要更多的工作。在这种情况下,既然您正在处理代码,您可能会考虑花时间进行一些重组。创建数据库层。也许开始使用预备语句。我还建议切换到PDO而不是mysqli。但是你的电话 - 考虑到你在问题中所说的话,如果你想做尽可能少的工作,这是可以理解的。

顺便说一句 - 如果您还没有这样做,您可能还想阅读:Why shouldn't I use mysql_* functions in PHP?

答案 1 :(得分:1)

是的,只要您的webhost升级到删除了扩展名的PHP版本,该应用程序就无法访问。请注意,这不会发生在PHP 5.5中,其中扩展名“仅”标记为已弃用。确切地说,延期将被删除是ataik未知的。

关于升级问题:这实际上取决于,您是否希望您的应用程序能够使用mysql_ *?您的Web主机是否经常更新PHP?如果他们的更新速度很慢,您可以运行该应用程序多年。

性能/安全性最好改为准备好的陈述。

答案 2 :(得分:1)

  

我是否应该花些时间更改所有mysql_ *调用并使用mysqli_ *调用切换它们。

不,不,不。

  • 如果您想让自己的应用更好,请熟悉某种ORMquery builder或至少DAL,例如PDOsafeMysql
  • 如果您想继续使用您的应用程序 - 请保持原样。您的服务器上还没有5.5,是吗?当你得到它时,你将能够关闭弃用级别的通知。不是最好的方法,但便宜又实用。

虽然机械上将mysql更改为mysqli调用没有任何好处。

  

如果我将所有内容都放在已弃用的mysql_ *扩展名中,我的应用程序是否会在互联网上无法访问?

实际上无法得到你在这里要求的东西,但我会说你至少要提前5年。

答案 3 :(得分:1)

你应该问自己的问题是

"How long before I am forced to move to a version of PHP that no longer supports mysql_*?"

如果您从未升级过PHP,则根本不需要更改代码。 (请不要对我大喊大叫)

然而,在某些时候,你将不得不转向更新的PHP版本

您的ISP或您的网络管理员会坚持认为您所使用的PHP版本在网络上已经过时且不安全。

所以诚实的答案是,你不必在星期五之前完成它,但是当该管理员坚持要删除你的PHP版本时,你必须在某个时候这样做。所以当你有时间 DO IT。

答案 4 :(得分:0)

是的,您应该费心更新代码以使用mysqli或PDO。

原因不仅在于mysql_ *在PHP的未来版本中无法访问。但也是在你的安全。

mysql_ *不支持涵盖sql保护的预准备语句/参数化语句。您可以使用mysql_real_escape_string(),但在处理MultiByte字符时,即使这样也不完美。

另见:https://security.stackexchange.com/questions/8028/does-mysql-escape-string-have-any-security-vulnerabilities-if-all-tables-using-lhttps://stackoverflow.com/a/12118602/1209443