我正在尝试使用带有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");
有什么想法解决这个问题吗?
答案 0 :(得分:3)
我建议使用DBX not 。它是一个死模块,不应该被现代代码使用。
DBX是removed from standard PHP in version 5.1。如果你安装了它,那意味着有人不顾一切地将它作为PECL模块安装,或者你使用的是非常旧的PHP版本。
在requirements page上,它声明:
为了能够将数据库与dbx-module一起使用,该模块必须链接或加载到PHP中
DBX支持与MS SQL Server通信的唯一模块是旧 mssql_
family。该扩展名为no longer available in Windows PHP versions 5.3 or later。
如果您使用的是Linux,并且正在使用操作系统提供的PHP版本,那么您可以安装它。查找php-mssql
或php53-mssql
。当您搜索“FreeTDS”的包描述时,它也可能会显示。如果没有可用的包裹,您可能会陷入痛苦的世界。 Getting mssql_
compiled and installed is quite a bear
但是,还有很多更好的选择。
DBX的目标是提供一组统一的函数,让您与众多现有的PHP数据库适配器通信。该角色现在由PDO填充。如果您使用的是Windows,则应使用PDO_SQLSRV。如果您不在Windows上,则可以使用PDO_DBLIB(使用与mssql_
系列相同的后端)或PDO_ODBC。如果您以前从未使用过PDO,那么有一些好tutorials。那个是针对MySQL用户的,但它仍然适用于其他数据库。
如果你编写的代码只打算在MS SQL Server上运行,并且你在Windows上运行PHP,那么你也可以考虑使用sqlsrv_
family of functions编写代码。