什么时候我需要的东西比MySqli能给我的更多?

时间:2013-08-07 03:29:57

标签: pdo mysqli prepared-statement named-parameters

我使用mysqli来做所有事情。我正在为我构建的小系统添加功能,其中一些例子是pdo。我准备转换为mysqli以匹配我的系统,但我意识到将我已经构建的内容改为pdo可能不那么重要。我一直在网上阅读pdo vs mysqli。

但这是我的问题。什么时候我需要的不仅仅是mysqli? PDO提供了mysqli没有的三个主要内容。十二种不同的驱动程序,命名参数和准备好的语句。

对于web-dev,我真的不需要能够使用我的Web应用程序超过18种数据库类型。

我看到的唯一主要优势是预备陈述。

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

是否有办法通过pdo获取select的结果数量?

1 个答案:

答案 0 :(得分:1)

你设法混淆了一切。

在你的陈述中

  • mysqli 确实也提供原生预备语句支持
  • 命名参数实际上只是没有任何意义地膨胀你的代码。但它们很容易手动实现。有些人称程序员可以实际编程和实现他们需要的任何功能。
  • 十二个不同的司机实际上是泡沫。其中只有少数几个实际可行,您只能通过更改DSN来切换数据库。您需要更高级别的抽象,例如ORM。

关于你错过的东西

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

所以,简而言之

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

关于你的其他问题

  

php现在是否支持命名参数?

PHP与命名参数无关。

  

是否有办法通过pdo获取select的结果数量?

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