PHP是否放弃了MySQL扩展


Has PHP abandoned the MySQL extension?

最近,PHP手册开始在每个mysql函数页面上显示以下警告:

不建议使用此扩展。相反,MySQLi 或 应使用PDO_MySQL扩展名。另请参阅 MySQL:选择 API 指南和相关常见问题解答以获取更多信息...

MySQLi曾经非常有问题,但他们是否对其进行了改进,使其最终配得上它的名字?这就是他们放弃MySQL扩展并试图让人们使用MySQLi的原因吗?

实际上,如果MySQLi不再有问题,我想使用它。它具有更多功能,并且是面向对象的。

对此有何评论?

编辑:我想知道的是是否可以使用 MySQLi。还是还是越野车?我应该改用PDO吗?

是的。因为(非常)长。我们现在有了mysqli,或者更好的是PDO。

不会把自己锁在mysqli里,我更喜欢PDO。除了它提供了一个数据库系统到另一个数据库系统的更容易的迁移之外,它还提供了更好的错误处理。

我想知道的是是否可以使用 MySQLi。还是还是越野车?

MySQLi本身是相当无错误的,它被用于生产。

我应该改用PDO吗?

如果你使用 mysqli

的唯一论据是它与 mysql 的相似性,那么你无论如何都不会充分发挥 mysqli 的潜力。如果你想充分发挥mysqli的潜力,那么你必须开始"重新"学习(你知道,学习起来并不多)。如果您从头开始学习一些新工具,那么为什么不首先学习更好的替代方案 - PDO?

另一方面,PDO也不完美。使用 PDO,您无法访问特定于 MySQL 的 API(例如构造后set_charset、文件设置、异步查询、预准备语句中的 OUT 参数)。此外,如果需要,您应该将其设置为执行真正的预准备语句。

PHP MySQLi 是一个 MySQL 改进的扩展。

mysqli 扩展允许您访问 MySQL 4.1 及更高版本提供的功能。

您可以在MySQLi扩展函数摘要中比较它们。

<小时 />

如果您正在寻找面向未来的面向对象的解决方案,那么要走的路是PHP PDO。

PHP

数据对象 (PDO) 扩展定义了一个轻量级、一致的接口,用于访问 PHP 中的数据库。实现 PDO 接口的每个数据库驱动程序都可以将特定于数据库的功能公开为常规扩展函数。

PDO 提供了一个数据访问抽象层,这意味着,无论您使用哪个数据库,您都使用相同的函数来发出查询和获取数据。

是的,你可以使用MySQLi,你写的是真的,API允许从MySQL API轻松更改。

对于新项目,建议不要再使用 ext/mysql,而是使用 ext/mysqliPDO_MySQL

由于您还没有写过 2009 年对您来说有什么问题,因此很难说这些错误是否消失了。我会这么认为,但是,好吧,自己检查一下。

您可能还希望将ext/mysqli与MySQL本机驱动程序一起使用,而不是MySQL客户端服务器库(libmysql)。

是时候了。mysql API 虽然易于使用,但存在许多问题。可以说,最糟糕的问题是完全缺乏对预准备语句的支持,这迫使您通过字符串操作将SQL片段拼凑在一起。这不仅速度慢,而且是SQL注入漏洞的主要来源。

PDO相对于MySQLi的优势之一是,当您决定在未来的项目中使用不同的DBMS时,您会发现不必学习新的API。