5 回答
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扩展的比较。
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特定的改进。
TA贡献1863条经验 获得超2个赞
该mysql_
功能:
已经过时了 - 他们不再维护了
不允许您轻松移动到另一个数据库后端
因此,不支持准备好的陈述
鼓励程序员使用串联来构建查询,从而导致SQL注入漏洞
添加回答
举报