引用行上的代码为:
mysql_connect($server, $username, $password);
我确信这些论点是正确的,而且这段代码已经工作多年了,没有任何问题。实际上,我是从一个关于PHP的资源丰富的教程中获得的。
>
为什么会这样?
我知道可以通过在php.ini
中设置error_reporting
以排除e_deprecated
来抑制弃用错误:
error_reporting = E_ALL ^ E_DEPRECATED
如果我那样做会发生什么?
>
为什么会发生这种情况?
整个
ext/mysql
PHP扩展提供了所有以mysql_
前缀命名的函数,在PHPV5.5.0中被正式弃用,在PHPV7中被删除。它最初是在PHPV2.0(1997年11月)中为MySQLV3.20引入的,自2006年以来没有添加任何新特性。再加上缺乏新功能,在复杂的安全漏洞中很难维护这些旧代码。
自2011年6月以来,该手册在新的守则中包含了对使用该工具的警告。
我该怎么修好它?
正如错误消息所提示的那样,您可以考虑另外两个MySQL扩展:MySQLi和PDO_MySQL,它们中的任何一个都可以用来代替
ext/MySQL
。从V5.0开始,这两个版本都在PHP核心中,所以如果您使用的版本会抛出这些弃用错误,那么您几乎可以肯定地立即开始使用它们--即。无需任何安装工作。hashphp.org有一个关于从
ext/mysql
迁移到PDO的优秀教程。我知道可以通过在
php.ini
中设置error_reporting
以排除e_deprecated
来抑制弃用错误:error_reporting = E_ALL ^ E_DEPRECATED
如果我那样做会发生什么?
是的,可以抑制这样的错误消息,暂时继续使用旧的
ext/mysql
扩展。但是您真的不应该这样做--这是开发人员的最后警告,该扩展可能不会与PHP的未来版本捆绑在一起(确实,正如前面提到的,它已经从PHPV7中删除了)。相反,您应该趁现在迁移应用程序,以免为时已晚。还请注意,该技术将取消所有
e_deprecated
消息,而不仅仅是那些与ext/mysql
扩展有关的消息:因此,您可能不知道PHP的其他即将发生的更改会影响您的应用程序代码。当然,只能通过使用PHP的错误控制运算符来抑制在所讨论的表达式上出现的错误。使用@
预置相关行-但是,这将抑制该表达式引发的所有错误,而不仅仅是e_deprecated
错误。>
您正在启动一个新项目。
完全没有理由使用
ext/mysql
--选择一个更现代的扩展,并从它们提供的好处中获得回报。您有(您自己的)遗留代码库,它当前依赖于
ext/mysql
。执行回归测试将是明智的:在确定了所有潜在的影响区域、围绕每一个区域进行规划并在临时环境中彻底测试解决方案之前,您确实不应该更改任何内容(尤其是升级PHP)。
>
遵循良好的编码实践,您的应用程序是以松散集成/模块化的方式开发的,并且数据库访问方法都是自包含的,可以很容易地替换为新的扩展。
花半个小时重写这个模块,以使用另一个更现代的扩展;彻底测试。您可以稍后引入进一步的改进,以获得它们提供的好处。
数据库访问方法分散在各处,不能轻易地被一个新的扩展替换掉。
您正在使用一个依赖于
ext/mysql
的第三方项目。考虑一下此时是否真的需要升级到PHPV5.5。
检查开发人员是否发布了与此特定问题相关的任何修补程序、变通方法或指南;或者,如果没有,则通过提请他们注意这一问题来迫使他们这样做。如果您迫切需要立即升级PHP,您可以考虑暂时取消弃用错误:但首先要确定是否有其他弃用错误也被抛出。
实际上,我正在寻找mysql_real_escape_string的替代方案来解决此错误。在php 5.4中,它工作得很好,但在php 5.5中不再如此
我怎样才能解决这个问题。我已经环顾了这可能是php版本的问题,但仍然无法删除此错误消息。
问题内容: 这个问题已经在这里有了答案 : 为什么我不应该在PHP中使用mysql_ *函数? (15个答案) 6年前关闭。 当我尝试从PHP连接到MySQL服务器时,出现以下错误: 不推荐使用:不推荐使用mysql扩展,以后将删除:在第123行的/path/to/filename.php中使用mysqli或PDO代替 引用行上的代码是: 我确信这些论点是正确的,并且这种确切的代码已经工作了多年没
问题内容: 更新到后,我的项目中会显示很多警告。 ’++’已过时:它将在 Swift 3中* 删除 * 有解决此警告的想法吗?和将来会被弃用的任何原因是什么? 问题答案: 从Swift 2.2开始,您应该使用或代替。 在查看了Swift的发展之后,有一些删除这些运算符的原因: 这些运算符增加了学习Swift作为第一门编程语言的负担-或在其他情况下您还不了解其他语言的运算符。 它们的表达优势极小-x
问题内容: Swift 3将弃用++ 现在可以将变量++编写为 我该如何改写。 请记住和语法之间的区别 问题答案: 将其重写为: …正像警告消息所暗示的那样。当然,这现在需要单独一行(这是此更改的唯一坏处)。重要的是您将那条线放在 哪里 。 所以举个例子 现在变成 但另一方面 现在变成 专家的额外建议: 在极少数情况下,即您返回,它在较大范围内, 然后 递增它—您可以解决以下问题: