mysqli、mysqlnd和PHP v5.4的问题.PDO会更好吗



在使用mysql_*更新代码的过程中,我遇到了一大堆麻烦。

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

升级后,我仍然有错误。在追逐我的尾巴很长时间后,由于这绝对超出了我的知识范围,我发现mysqlnd还没有为mysqli启用。

在与我的网络主机支持人员交谈后,我得到了以下回复:

似乎只能根据旧的libmysql库构建mysqli,或者反对mysqlnd。cPanel显然默认使用旧库,因为mysqli与旧图书馆一起使用了很长一段时间。

我们可以尝试强制mysqli针对mysqlnd进行构建。。。但我没有如果其他网站使用mysqli,这可能会产生什么影响已经反对旧的图书馆

这听起来不是一个好主意,在这个阶段(浪费了很多时间),我想我不应该烦恼,而应该坚持使用mysql_*。

有人提到PDO,但我对此一无所知。它似乎与mysqli相似?我真的不想花更多的时间去学习另一种新的东西,只会在以后遇到类似的砖墙。

当然,没有任何计划切换到不同类型的数据库,所以这不是违背了使用PDO的目标吗?我应该试着找到一些代码来做与get_result()相同的事情,但在5.3中可以工作吗?

我认为PDO无论如何都会是比mysqli更好的解决方案。这是一个PHP的原生库,它运行得很好,使用起来也很容易。

尽管它们已被弃用,但mysql_*函数离完全删除还有很长的路要走。然而,一旦您决定从mysql_*进行切换,您还可以使用事实上的标准,即现在的PDO库。它提供了比mysqli更多的功能(命名参数、准备好的语句),可以与更多的数据库供应商合作,安全性更好,而性能差异可以忽略不计。

在您的情况下,我将测试PDO是否在您的托管环境中工作。如果他们不这样做,那就更换主机。

PDO会更好吗?

是。

它像mysqli吗?

否。

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

最新更新