不久前我停止使用这些功能时,在这里扮演了Devil’s Advocate的角色,但问题是真实的,可能对许多SO用户来说很重要。
我们都知道mysql_以错误的方式使用功能可能非常危险,可能使您的网站容易受到攻击等。但是正确使用这些功能可以防止SQL注入,并且实际上比新的PDO功能要快一些。
mysql_
牢记所有这些,为什么mysql_不推荐使用这些功能?
mysql扩展很古老,自15年前发布(PHP)以来一直存在(!!);与现代PHP试图摆脱过去的不良做法相比,它绝对是另一种野兽。mysql扩展是MySQL的非常原始的低级连接器,它缺少许多便利功能,因此很难以安全的方式 正确 应用。因此对菜鸟不利。许多开发人员不了解SQL注入,并且mysql API十分脆弱,即使您知道它,也很难阻止它。它充满了全局状态(例如,通过了隐式连接),这使得编写难以维护的代码变得容易。由于它已经很旧了,因此在PHP核心级别上可能难以合理地维护。
mysqli扩展很新,可以解决上述所有问题。PDO还是相当新的,并且还解决了所有这些问题,以及更多其他问题。
由于这些原因*,将来会在某个时候删除mysql扩展名。它在鼎盛时期做了自己的工作,相当糟糕,但是做到了。时间在流逝,最佳实践在发展,应用程序变得更加复杂,需要更现代的API。mysql已经退休了,请继续使用。
考虑到所有这些,除了惯性之外, 没有理由 继续使用它。
*这些是我的常识性总结原因;有关整个官方故事,请看这里:https : //wiki.php.net/rfc/mysql_deprecation
该文档中的选择语录如下:
文档团队正在讨论数据库安全状况,并且教育用户摆脱常用的ext / mysql扩展是其中的一部分。 离开ext / mysql不仅关系到安全性,而且关系到可以访问MySQL数据库的所有功能。 ext / mysql很难维护代码。它并没有获得新功能。保持最新以使用新版本的libmysql或mysqlnd版本是可行的,我们可能会花更多的时间。
文档团队正在讨论数据库安全状况,并且教育用户摆脱常用的ext / mysql扩展是其中的一部分。
离开ext / mysql不仅关系到安全性,而且关系到可以访问MySQL数据库的所有功能。
ext / mysql很难维护代码。它并没有获得新功能。保持最新以使用新版本的libmysql或mysqlnd版本是可行的,我们可能会花更多的时间。