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

为什么一个人不应该使用mysql_*功能的技术原因是什么?(例如mysql_query()mysql_connect()mysql_real_escape_string())?

即使他们在我的网站上工作,为什么还要使用其他东西?

如果他们不在我的网站上工作,为什么我会收到错误

MM们
浏览 594回答 5
5回答

ibeautiful

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扩展的比较。

缥缈止盈

首先,让我们从我们给大家的标准评论开始:请不要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特定的改进。

小唯快跑啊

该mysql_功能:已经过时了 - 他们不再维护了不允许您轻松移动到另一个数据库后端因此,不支持准备好的陈述鼓励程序员使用串联来构建查询,从而导致SQL注入漏洞
打开App,查看更多内容
随时随地看视频慕课网APP