【问题标题】:Problems with mysqli, mysqlnd and PHP v5.4. Would PDO be better?mysqli、mysqlnd 和 PHP v5.4 的问题。 PDO会更好吗?
【发布时间】:2014-03-15 03:31:52
【问题描述】:

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

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: php pdo mysqli mysqlnd


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      PDO 会更好吗?

      是的。

      是不是像mysqli?

      没有。

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

      【讨论】:

      • "它可以正确运行 SQL 查询,这与您使用旧 mysql 或新 mysqli 的方式相反。"你能解释一下吗
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-08-10
        • 2019-11-07
        • 2011-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-11
        • 2014-03-20
        相关资源
        最近更新 更多