【问题标题】:PHP database connectivity considerationsPHP 数据库连接注意事项
【发布时间】:2012-06-12 16:32:16
【问题描述】:

我正在用 PHP 编写一个新的应用程序,它将作为商业应用程序向公众发布。到目前为止,我的经验是在 PHP 中使用 MySQL 数据库。

最终用户负责提供数据库功能,PHP 应用程序将简单地连接到它并使用它。

我的问题是,由于我不知道用户将使用什么数据库,我该如何在 PHP 中支持它?

我的问题是:

  • ODBC 是否正确?我在下面提到了 ODBC,但如果 ODBC 不是正确使用的方法,同样的问题适用于任何建议的方法。

  • 使用 ODBC 函数而不是 PHP 中的 MySQL 等效函数,我是否会失去任何功能/特性?

  • 我需要牢记什么与安全相关的事情吗?例如,我在以前的应用程序中使用过 mysql_real_escape_string()。什么是 ODBC 等价物(甚至需要吗?)

  • 我假设 PHP 可以使用 ODBC 连接到 MySQL 数据库? MySQL 是否需要以某种方式进行配置以允许这样做?

  • 就性能而言,ODBC 是否可以接受?

【问题讨论】:

    标签: php database pdo odbc


    【解决方案1】:

    为了支持和性能,您最好的选择可能是 PDO(PHP 数据库对象)。这是 PHP 的核心,支持所有主要的数据库系统,将原生处理转义字符串等。

    为了保持不可知论,你不能只使用 MySQL 的东西,例如。 LIMIT 添加并非所有 SQL 数据库都支持。

    话虽如此,请先检查。如果客户端有一个 noSQL 数据库,或者使用带有唯一连接字符串的 Amazon(例如),那么您就有麻烦了。

    【讨论】:

    • 我认为 PDO 将涵盖我的大部分基础。 MySQL、PostgreSQL、Informix、ODBC、Oracle 都支持。我发现这个关于 PDO 的教程很有用 net.tutsplus.com/tutorials/php/…
    【解决方案2】:

    我的问题是,因为我不知道用户将使用什么数据库, 我该如何在 PHP 中支持这一点?

    这是在 PHP 中使用数据库抽象的链接。

    数据库抽象库的目的是创建与多个数据库服务器通信的一致性。这样想,为了让您的应用程序支持多个数据库,它需要不同的代码行来在每个数据库上执行相同的功能。使用抽象库,应用程序只需要一组代码即可与库支持的任何数据库进行通信。这极大地增加了可用于 PHP 应用程序的数据库服务器选项的数量。

    http://www.hosting.com/support/programming/using-adodb-to-build-a-database-agnostic-php-application

    【讨论】:

    • 请提供更多解释,而不仅仅是一个链接作为答案。
    【解决方案3】:

    我可能会标准化 PDO;它抽象了大量的数据库并公开了一个统一的接口,它是用 C 编写的,大多数人都会默认安装它。

    此处请注意;并非所有数据库都支持相同的 SQL 语法,因此您可能也必须为此提供服务。虽然这很棘手,但一种方法是在 PDO 和您的类之间定义一个辅助类;这个助手类会将业务逻辑调用转换为实际的 SQL。您可以提供一个适用于 MySQL 并让您的用户创建其他的吗? :)

    【讨论】:

    • @psynnott 是的,我相信 Doctrine 可以解决这个问题......但我确信这不是微不足道的 :) 顺便说一句,我已经补充说 PDO 是用 C 编写的,而不是多宝数据库。可以指出 ADODB 是纯 PHP,因此您没有依赖项,但 PDO 在许多发行版中确实是默认的:)
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多