mysqli,mysqlnd和PHP v5.4的问题。 PDO会更好吗?

时间:2014-02-15 18:42:02

标签: php pdo mysqli mysqlnd

在我使用mysql_ *更新代码的努力中,我遇到了一大堆痛苦。

我决定将我的代码改为使用mysqli,首先是程序风格。在学习了一点之后,我认为实际上面向对象的风格更好。当使用预准备语句时,我在尝试使用get_result()时遇到了问题。我想使用它,因为我有很多需要绑定的字段。因此,在查看问题后,您似乎需要使用mysqlnd驱动程序,这只能在PHP 5.4版中使用。我使用的是5.3版,所以决定升级。

升级后,我仍然有错误。追逐我的尾巴多年后,因为这肯定在我的知识领域之外,我发现没有为mysqli启用mysqlnd。我也收到了与PHP相关的错误,无法找到动态库suhosin.so和ffmpeg.so。

在与我的虚拟主机支持人员交谈后,我收到了以下回复:

  

似乎mysqli只能针对旧的libmysql库构建,或者   对抗mysqlnd。自从mysqli出现以来,cPanel默认默认使用较旧的库   与旧图书馆一起使用了很长时间。

     

我们可以尝试强制mysqli构建针对mysqlnd ...但我没有   想知道如果任何其他网站使用mysqli,这会产生什么影响   已经反对旧图书馆了

这听起来不是一个好主意,而且在这个阶段(浪费了大量时间)我认为我应该从来没有打扰过,只是坚持使用mysql_ *。

PDO已被提及,但我对此一无所知。它似乎与mysqli相似?我真的不想花更多的时间去学习新的东西,只是遇到了类似的砖墙。

当然没有任何计划切换到不同类型的数据库,那么这是不是打败了使用PDO的对象?我是否应该尝试找到一些与get_result()相同的代码,但这样可以在5.3中使用?

您认为我最好的选择是什么?对于漫无边际的帖子感到抱歉,但我很迷茫和困惑!

3 个答案:

答案 0 :(得分:0)

我认为PDO在任何情况下都是比mysqli更好的解决方案。它是PHP的本机库,它运行良好,而且非常易于使用。

答案 1 :(得分:0)

虽然它们已被弃用,mysql_*函数距离完全删除还有很长的路要走。但是,一旦您决定从mysql_*进行切换,您可以选择事实上的标准,现在是PDO库。它提供了超过mysqli的额外功能(命名参数,预处理语句),它与更多的数据库供应商合作,安全性稍好一些,而性能差异则可以忽略不计。

在您的情况下,我会测试PDO是否适用于您的托管环境。如果他们不这样做,那么改变主机。

答案 2 :(得分:-1)

  

PDO会更好吗?

  

是不是像mysqli?

没有。

它正确运行SQL查询,与您使用旧mysql或新mysqli的方式相反。