【问题标题】:When will I ever need more than what MySqli can give me?我什么时候需要比 MySqli 给我的更多的东西?
【发布时间】:2013-08-08 06:50:39
【问题描述】:

我对所有事情都使用 mysqli。我正在为我构建的一个小型系统添加功能,其中一些示例是 pdo。我正要转换为 mysqli 以匹配我的系统,但我意识到将我已经构建的内容更改为 pdo 可能会减少工作量。我一直在网上阅读有关 pdo 与 mysqli 的信息。

但这是我的问题。我什么时候需要更多的mysqli? PDO 提供了 mysqli 没有的三个主要功能。十二种不同的驱动程序、命名参数和预准备语句。

对于网络开发人员,我真的不需要能够使用超过 18 种数据库类型的网络应用程序。

我看到的唯一主要优势是准备好的语句。

当我使用的唯一语言是 php 时,切换的主要原因是什么? php现在还支持命名参数吗?

有没有办法使用 pdo 从选择中获取结果数?

【问题讨论】:

    标签: pdo mysqli prepared-statement named-parameters


    【解决方案1】:

    你设法混淆了一切。

    关于你的陈述

    • mysqli 确实也提供原生预处理语句支持
    • 命名参数实际上只是毫无目的地使您的代码膨胀。然而,它们很容易手动实现。有些人被称为程序员,他们可以实际编程和实现他们需要的任何功能。
    • 十二个不同的驱动程序实际上是一个泡沫。它们中只有少数真正可行,您不能仅通过更改 DSN 来切换数据库。您需要更高级别的抽象,例如 ORM。

    关于你错过了什么

    • mysqli 处理prepared statements 的方式对于新手来说确实太复杂了。
    • 事实上,mysqli 只是一个不应按原样使用的 API,而只能作为更高级别驱动程序的源材料。
    • 但它有很多特定于 mysql 的细节,在像 PDO 这样的通用驱动程序中显然没有

    简单来说

    • 如果您要创建与 mysql 一起使用的数据库抽象库 - 选择 mysqli。
    • 如果您使用 API 的唯一想法是直接在代码中调用它的方法 - 那么 PDO 是唯一的选择,因为它已经是一个半 DAL 并且它对预准备语句的支持更易于使用。

    关于你的其他问题

    php 现在还支持命名参数吗?

    PHP 与命名参数无关。

    有没有办法使用 pdo 从选择中获取结果数?

    你不需要它。得到结果后,您可以简单地计算它们。

    【讨论】:

      猜你喜欢
      • 2019-09-03
      • 1970-01-01
      • 2019-06-19
      • 2010-09-21
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2010-10-15
      相关资源
      最近更新 更多