警告:未加载dbx:module'mssql'

che*_*nio 5 php database sql-server

我正在尝试使用带有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.
Run Code Online (Sandbox Code Playgroud)

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

Warning: dbx: module 'mssql' not loaded.
Run Code Online (Sandbox Code Playgroud)

这是代码:

dbx_connect("mssql","host","database","user","password");
Run Code Online (Sandbox Code Playgroud)

有什么想法解决这个问题?

Cha*_*les 3

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

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

需求页面上,它指出:

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

DBX 支持与 MS SQL Server 对话的唯一模块是 mssql_系列。该扩展在 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_函数系列来编写它。