想要升级用mysql *编写的数据库类。我接下来应该使用什么?

时间:2013-03-02 05:18:43

标签: php mysql database pdo mysqli

我是一名中级开发人员,直到今天,我还使用了几年前我编写的depracated mysql *函数的数据库类。我想升级它,但在我选择之前,我想得到stackoverflow的意见。

之前我有两个选择。 MySQLi和PDO。最近,一位资深开发人员告诉我要完全删除我的数据库类,学习Doctrine DBAL并使用它。

我不太了解Doctrine DBAL。这对我的迷你框架来说有点过分吗?

我应该选择和使用什么?为什么?

4 个答案:

答案 0 :(得分:2)

PDO非常好。学说臃肿而缓慢。我只有可怕的经历,并且找不到任何有理由在PDO上使用它。 DBAL!= ORM顺便说一下。 DBAL是DB抽象层。 PDO是数据访问层。无论如何,PDO是一个很好的工具。

答案 1 :(得分:1)

感谢您提出的好问题。

首先,关于MySQLi与PDO的问题 如果您正在为自己的班级寻找新基地

  • 如果你要使用原生的预备语句,PDO是唯一的选择,因为mysqli对它们的实现是可怕的。
  • 如果你已经在旧的基于mysql的类中拥有自己的占位符 - mysqli将更容易转换。

如果你正在寻找全新的类,PDO再次是唯一的选择,因为它具有一些抽象功能,使得它的使用变得更加容易,并且产生了显着更短的代码。最近我写了一篇wiki for the PDO tag来解释它的一些功能(以及陷阱) - 你可能会发现它很有用。
但是,它缺乏许多重要的功能。因此,手工制作的助手类仍然是最佳选择。

如果你没有实施占位符,我建议你做一个现成的课程,因为占位符必须是这类课程的主要原因。 我让SafeMysql牢记3个目标:安全,干燥代码和易用性 我希望你喜欢类型暗示占位符的想法。

至于学说 - 我个人不喜欢这样的抽象层次。我更喜欢尽可能接近SQL。只有少数帮助安全和较少的代码。

关于所有表演内容的说明 我从来没有见过DBAL会成为瓶颈的应用程序。 因此,无论(假想的)性能问题都是您最不关心的问题 通过实际数据对实时环境进行实际操作是唯一可靠的证据。

答案 2 :(得分:0)

世界上绝对没有理由不使用MySqli或PDO - 无论你觉得哪一个都很舒服。

... IMHO

PS: 我从来没有听说过“Doctrine DBAL”:)

PPS: 另一个抽象层通常意味着更多膨胀,性能降低和灵活性降低。更不用说学习曲线了。坚持使用PDO或MySqli的所有理由都非常充分。

答案 3 :(得分:0)

如果这仅适用于MySQL,请使用mysqli,因为与PDO相比,它略微(略微意味着高达10%)。如果您想使用Doctrine DBAL的额外功能,如转换或类型转换,您可以尝试一下。如果没有,请继续使用PDO,因为它比Doctrine DBAL快得多(最多10次)并且使用的内存更少。