PHP放弃了MySQL扩展吗?

时间:2012-06-14 22:04:46

标签: php

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

  

不鼓励使用此扩展程序。相反,MySQLi或   应该使用PDO_MySQL扩展。另请参见MySQL:选择API   指南及相关常见问题解答以获取更多信息...

MySQLi曾经非常错误,但他们是否已经对它进行了改进,以至于它最终值得它的名字?这就是他们放弃MySQL扩展并试图让人们使用MySQLi的原因吗?

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

对此有何评论?

//编辑:我想知道的是使用MySQLi是否可以。还是它仍然是马车?我应该选择PDO吗?

4 个答案:

答案 0 :(得分:9)

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

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

  

我想知道的是使用MySQLi是否可以。或者它仍然是马车?

MySQLi本身没有任何错误,它已在生产中使用。

  

我应该选择PDO吗?

如果您使用mysqli的唯一论据是它与mysql的相似性,那么您可能无论如何都不会将mysqli充分发挥其潜力。如果你想充分发挥mysqli的潜力,那么你必须开始“重新学习”(你知道这个学习并不是很多)。如果你从“刮擦”开始学习一些新工具,那么为什么不首先学习更好的替代方案 - PDO?

另一方面,PDO也不完善。使用PDO,您无法访问MySQL特定的API(例如post-construct set_charset,infile设置,异步查询,来自预准备语句的OUT参数)。此外,如果需要,您应该将其设置为执行真正准备好的语句。

答案 1 :(得分:3)

PHP MySQLi是MySQL改进的扩展。

  

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

您可以在The MySQLi Extension Function Summary处比较它们。


如果您正在寻找面向对象的面向未来的解决方案,那么可以选择PHP PDO

  

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

     

...

     

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

答案 2 :(得分:2)

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

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

由于你还没有在2009年为你写过什么样的车,所以很难说这些错误是否已经消失。我会这么认为,但是,好吧,自己检查一下。

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

答案 3 :(得分:1)

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

PDO优于MySQLi的一个优点是,当您决定在未来的项目中使用不同的DBMS时,您将不必学习新的API。