2

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

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

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

我的问题是:

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

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

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

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

  • 性能方面,ODBC 是否可以接受?

4

3 回答 3

1

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

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

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

于 2012-06-08T15:46:30.853 回答
1

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

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

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

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

于 2012-06-08T15:37:38.067 回答
1

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

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

于 2012-06-08T15:47:36.220 回答