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

标签 php mysql

<分区>

为什么不应该使用 mysql_* 函数的技术原因是什么? (例如 mysql_query()mysql_connect()mysql_real_escape_string())?

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

如果它们在我的网站上不起作用,为什么我会收到类似

的错误

Warning: mysql_connect(): No such file or directory

最佳答案

MySQL 扩展:

  • 未在积极开发中
  • 正式deprecated 从 PHP 5.5(2013 年 6 月发布)开始。
  • removed完全 从 PHP 7.0 开始(2015 年 12 月发布)
    • 这意味着截至 31 Dec 2018它不存在于任何受支持的 PHP 版本中。如果您使用的是支持它的 PHP 版本,那么您使用的是未修复安全问题的版本。
  • 缺少 OO 接口(interface)
  • 不支持:
    • 非阻塞、异步查询
    • Prepared statements或参数化查询
    • 存储过程
    • 多个语句
    • 交易
    • "new"密码验证方法(MySQL 5.6 默认启用;5.7 要求)
    • MySQL 5.1 或更高版本中的任何新功能

由于它已被弃用,使用它会使您的代码不那么适合 future 。

不支持准备好的语句尤为重要,因为与使用单独的函数调用手动转义外部数据相比,它们提供了一种更清晰、更不易出错的转义和引用外部数据的方法。

参见 the comparison of SQL extensions .

关于php - 为什么我不应该在 PHP 中使用 mysql_* 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56876731/

相关文章:

PHP PDO 仅使用 bindValue 和 bindParam 插入数组的最后一个值

php - MySQL table1 和 table2 如果表 1 中不存在则显示

mysql REPLACE INTO 只有一些字段

Mysql join查询两个多列但重复多次的表

php - 我的网站是一个视频广播网站。我是否必须在 ffmpeg 主机上托管,还是可以使用普通主机?

PHP 5.6 MySQL foreach 查询返回相同的值

PHP/MySQL header 和客户端库不匹配

php - PHP去除重复值的方法

使用部分精确数学进行 MySQL 数据库搜索

php - 将 YouTube 播放列表中的所有视频 ID 获取到 PHP 数组中