【问题标题】:Standard connection libraries for MySQL, MSSQL, and Oracle in PHPPHP 中 MySQL、MSSQL 和 Oracle 的标准连接库
【发布时间】:2008-10-04 22:24:01
【问题描述】:

我正在寻找一种在 PHP 中连接到数据库的标准方法。我们都经历过——首先从一些基本的代码开始连接/查询/迭代/插入/断开连接,然后代码随着程序的增长而增长,最终导致难以重用的混乱。

我知道有许多 PEAR、PECL 和其他 PHP 库/类可以符合我的描述 - 但哪些是维护、使用并已被证明无错误且高效的?

【问题讨论】:

  • 您能指定您使用的数据库品牌吗?例如。 MySQL、Oracle、Microsoft、PostgreSQL 还是混合?
  • 每个项目都有自己的需求,而且很多时候客户已经在运行一个数据库,所以他通常想使用现有的。根据我的经验,我的大多数客户都运行 MySQL、MSSQL 或 Oracle。如果他们没有数据库,我当然建议他们运行 MySQL。

标签: php database


【解决方案1】:

如果您使用的是 PHP 5 try out PDO

【讨论】:

    【解决方案2】:

    我很惊讶 Zend_Db 还没有被提及...

    • PEAR 的 MDB2:非常稳定,还提供了一个层,可在至少可以模拟的所有数据库中实现所有 MDB2 支持的功能。我已经使用这个多年了,并取得了很大的成功。
    • Zend Framework 的 Zend_Db:我刚刚开始使用 Zend 整个数据库基础架构的更高级别,但它似乎相当稳定且经过深思熟虑。
    • PHP5 原生的PDO:我完全没用过,但我相信它是所有这些中最简单的。事实上,MDB2Zend_Db 都可以使用 PDO 作为底层。

    以上所有实现准备和执行。其中,MDB2 是最成熟的,因为它已经存在了很长时间,并且基于 DBMDBZend_Db 似乎是经过深思熟虑的。我知道还有其他人,但我没有任何经验或任何知识。

    【讨论】:

      【解决方案3】:

      尝试Object Relational Mapping 库,例如PropelDoctrine,它们都使用PDO 作为数据库抽象层,因此它们几乎可以在所有引擎上工作。

      【讨论】:

        【解决方案4】:

        这两个是我认为最好的。虽然我不能声称已经尝试过所有这些:)

        如果在 Linux 上,无论您最终选择哪种库,都需要 FreeTDS 来连接 MSSQL。

        【讨论】:

          【解决方案5】:

          在尝试决定由谁编写或使用新库时,在查看新的数据库连接/查询对象时,我们认为最好自己编写。最后,它可能不具备许多其他库所具有的灵活性,但我们添加了诸如GetAll() 检索键控数组中的所有行或GetAllKeyed() 之类的功能,它返回 ID 为的键控数组钥匙。另一个很棒的是GetOne(),当您的选择只有 1 列时使用。这些都大大减少了代码量。

          另外一个特点是,当你进行查询时,它会确定它是什么类型的查询(INSERTUPDATESELECTDELETE 等),然后返回适当的信息(例如@ 987654328@,最后一个插入id或DELETE删除的行数)。

          但我们也复制了 PEAR:DB 中的 Prepare & Execute 等功能。

          【讨论】:

            猜你喜欢
            • 2011-03-04
            • 2011-12-04
            • 2018-01-12
            • 2023-04-07
            • 2017-02-07
            • 1970-01-01
            • 1970-01-01
            • 2014-12-09
            • 1970-01-01
            相关资源
            最近更新 更多