5

我正在尝试使用带有 DBX 的 PHP 连接到 MS SQL Server。使用 phpinf(),我可以注意到 dbx 已启用:

dbx

dbx support enabled
dbx version 1.0.0
supported databases MySQL ODBC PostgreSQL Microsoft SQL Server FrontBase Oracle 8 (oci8) Sybase-CT.

但是当我尝试连接时,出现此错误:

Warning: dbx: module 'mssql' not loaded.

这是代码:

dbx_connect("mssql","host","database","user","password");

有什么办法解决这个问题吗?

4

1 回答 1

3

我的建议是不要使用 DBX。它是一个死模块,不应该被现代代码使用。

DBX在版本 5.1中从标准 PHP中删除。如果您安装了它,这意味着有人不遗余力地将其安装为 PECL 模块,或者您使用的是非常旧的 PHP 版本。

需求页面上,它指出:

为了能够通过 dbx-module 使用数据库,该模块必须链接或加载到 PHP

DBX 支持与 MS SQL Server 通信的唯一模块是old mssql_family。该扩展在 Windows PHP 5.3 或更高版本中不再可用

如果您在 Linux 上,并且正在使用操作系统提供的 PHP 版本,您可能能够安装它。寻找php-mssqlphp53-mssql。当您搜索“FreeTDS”的包描述时,它也可能会出现。如果没有可用的软件包,您可能会陷入痛苦的世界。 编译mssql_和安装是一件很麻烦的事

但是,还有更好的选择。

DBX 的目标是提供一组统一的函数,让您可以与大量现有的 PHP 数据库适配器对话。该角色现在由PDO担任。如果你在 Windows 上,你应该使用PDO_SQLSRV。如果您不在 Windows 上,您可以使用PDO_DBLIB(它使用与家庭相同的后端mssql_)或PDO_ODBC。如果您以前从未使用过 PDO,这里有一些很好的教程。那个是针对 MySQL 用户的,但它仍然适用于其他数据库。

如果您编写的代码只打算在 MS SQL Server 上运行,并且您在 Windows 上运行 PHP,那么您也可以考虑使用sqlsrv_函数系列来编写它。

于 2012-12-11T09:18:58.477 回答