1

我是一名中级开发人员,直到今天,我有一个使用几年前编写的已弃用 mysql* 函数的数据库类。我想升级它,但在我选择一些东西之前,我想了解一下stackoverflow。

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

我不太了解 Doctrine DBAL。对于我的迷你框架来说,这会不会有些过头了?

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

4

4 回答 4

2

PDO 完全没问题。教义臃肿而缓慢。除了可怕的经历外,我什么都没有,并且找不到任何充分的理由在 PDO 上使用它。DBAL != ORM。DBAL 是数据库抽象层。PDO 是数据访问层。无论如何,PDO 是一个很棒的工具。

于 2013-03-02T05:20:59.973 回答
1

谢谢你的好问题。

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

  • 如果您要使用本机准备好的语句,PDO 是唯一的选择,因为 mysqli 对它们的实现是可怕的。
  • 如果您在旧的基于 mysql 的类中已经有自己的占位符 - mysqli 会更容易过渡。

如果您正在寻找全新的类,PDO 又是唯一的选择,因为它具有一些抽象功能,使其使用起来更容易,并且生成的代码大大缩短。最近我为 PDO 标签写了一个 wiki,解释了它的一些特性(以及缺陷)——你可能会发现它很有用。
但是,它缺少许多重要功能。所以,手工制作的助手类仍然是最好的选择。

如果您还没有实现占位符,我建议您使用现成的课程,因为占位符必须是此类课程的主要原因。
我让SafeMysql牢记 3 个目标:安全、DRY 代码和易用性。
我希望你喜欢类型提示占位符的想法。

至于学说——我个人不喜欢这种抽象程度。我更喜欢尽可能接近 SQL。只有几个安全助手和更少的代码。

关于所有这些性能的东西的注释。
我从未见过 DBAL 会成为瓶颈的应用程序。因此,任何(想象的)性能问题都必须是您最不关心的问题。
使用实际数据在实时环境中进行的真实分析是唯一可靠的证明。

于 2013-03-02T05:24:27.377 回答
0

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

恕我直言...

PS:我也从未听说过“Doctrine DBAL”:)

PPS:另一个抽象层通常意味着更臃肿、性能下降和灵活性降低。更不用说学习曲线了。坚持使用 PDO 或 MySqli 的所有很好的理由。

于 2013-03-02T05:22:11.427 回答
0

如果这仅适用于 MySQL,请使用 mysqli,因为它比 PDO 稍微快一些(稍微意味着最多 10%)。如果您想使用 Doctrine DBAL 的额外功能,例如事务或类型转换,您可以尝试一下。如果不是,请继续使用 PDO,因为它比 Doctrine DBAL 快得多(最多 10 倍)并且使用更少的内存。

于 2013-03-02T05:27:32.880 回答