为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不应该在PHP中使用mysql_ *函数?

为什么我不应该在PHP中使用mysql_ *函数?

MM们 2019-05-20 14:45:52
为什么一个人不应该使用mysql_*功能的技术原因是什么?(例如mysql_query(),mysql_connect()或mysql_real_escape_string())?即使他们在我的网站上工作,为什么还要使用其他东西?如果他们不在我的网站上工作,为什么我会收到错误
查看完整描述

5 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

MySQL扩展:

  • 不是在积极发展

  • 正式弃用的PHP 5.5(6月发布2013年)。

  • 完全删除 PHP 7.0(2015年12月发布)

    • 这意味着自2018年12月31日起,它将不存在于任何受支持的PHP版本中。目前,它只获得安全更新。

  • 缺少OO界面

  • 不支持:

    • 非阻塞,异步查询

    • 准备好的语句或参数化查询

    • 存储过程

    • 多个陈述

    • 交易

    • “新”密码验证方法(MySQL 5.6中默认启用; 5.7中要求)

    • MySQL 5.1中的所有功能

由于它已被弃用,因此使用它会使您的代码不再适用于未来。

缺乏对预准备语句的支持尤为重要,因为它们提供了一种更清晰,更不容易出错的方法来转义和引用外部数据,而不是通过单独的函数调用来手动转义它。

请参阅SQL扩展的比较


查看完整回答
反对 回复 2019-05-20
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

首先,让我们从我们给大家的标准评论开始:

请不要mysql_*在新代码中使用函数。它们不再维护,并且已被正式弃用。看到红色的盒子?了解准备好的语句,并使用 PDO MySQLi -本文将帮助您确定哪些。如果您选择PDO,这是一个很好的教程

让我们逐句逐句解释:

  • 它们不再维护,并且已被正式弃用

    这意味着PHP社区正在逐渐放弃对这些非常旧的功能的支持。它们很可能不存在于PHP的未来(最新)版本中!继续使用这些功能可能会破坏(不是那么)远期的代码。

    新!- 从PHP 5.5开始, ext / mysql现已正式弃用!

    较新的!在PHP 7中删除了 ext / mysql 。

  • 相反,你应该学习准备好的陈述

    mysql_*扩展不支持预准备语句,这是(除其他外)一个非常有效的SQL注入对策。它修复了MySQL依赖应用程序中的一个非常严重的漏洞,它允许攻击者访问您的脚本并对您的数据库执行任何可能的查询

    有关更多信息,请参阅如何在PHP中阻止SQL注入?

  • 看红盒子?

    当您转到任何mysql功能手册页时,您会看到一个红色框,说明它不应再使用了。

  • 使用PDO或MySQLi

    有更好,更强大和精心构建的替代方案,PDO - PHP数据库对象,提供完整的OOP方法进行数据库交互,以及MySQLi,这是MySQL特定的改进。


查看完整回答
反对 回复 2019-05-20
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

mysql_功能:

  1. 已经过时了 - 他们不再维护了

  2. 不允许您轻松移动到另一个数据库后端

  3. 因此,不支持准备好的陈述

  4. 鼓励程序员使用串联来构建查询,从而导致SQL注入漏洞


查看完整回答
反对 回复 2019-05-20
  • 5 回答
  • 0 关注
  • 593 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信