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/50191129/

相关文章:

php - sql更新不改变数据库中的数据

php - 使用PHP将文本文件转换成数组

php - 使用 php mysql 的可编辑列表

javascript - 如何在 Extjs 中将数据从 Json 加载到 Json

mysql - 选择列表;这与我的 sql 中的 DISTINCT 不兼容

php - 找出哪个 php 文件在 WordPress 中生成了一行 html 代码的最佳方法

PHP While 循环将数据分成列

mysql - 永久计算域mysql数据库

mysql - 如何在 Laravel 的一个表中连接外键不唯一的表

mysql - 在 MySQL 中存储多年可用日期的最佳方式