1

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

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

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

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

似乎 mysqli 只能针对旧的 libmysql 库或 mysqlnd 构建。cPanel 显然默认使用较旧的库,因为 mysqli 已与较旧的库一起使用了很长时间。

我们可以尝试强制 mysqli 针对 mysqlnd 构建......但我不知道如果任何其他站点已经对旧库使用 mysqli 这可能会产生什么影响

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

PDO 已被提及,但我对此一无所知。好像和mysqli很像?我真的不想花更多的时间去学习另一个新东西,然后才会在更远的地方遇到类似的砖墙。

当然没有任何计划切换到不同类型的数据库,那么这不是破坏了使用 PDO 的目的吗?我是否应该尝试找到一些与 get_result() 执行相同操作但在 5.3 中有效的代码?

4

3 回答 3

1

无论如何,我认为 PDO 将是一个比 mysqli 更好的解决方案。它是 PHP 的原生库,运行良好且非常易于使用。

于 2014-02-15T18:47:10.060 回答
0

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

在您的情况下,我会测试 PDO 在您的托管环境中是否有效。如果他们不这样做,则更改主机。

于 2014-02-28T13:52:29.163 回答
-1

PDO会更好吗?

是的。

它像mysqli吗?

不。

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

于 2014-02-15T18:47:24.137 回答