2012-11-26 53 views
5

我試圖用DBX連接到帶有PHP的MS SQL Server。用phpinf(),我可以注意到,DBX啓用:警告:dbx:module'mssql'未加載

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

重新安裝一切 – dynamic

+0

即使它*應該*是等效的:嘗試使用DBX_MSSQL而不是'mssql' – artragis

回答

3

我的建議是要使用DBX的而不是。這是一個死的模塊,不應該被現代代碼使用。

DBX是removed from standard PHP in version 5.1。如果你安裝了它,這意味着有人不願意將它安裝成PECL模塊,或者你使用的是舊版本的PHP。

requirements page,它指出:

To be able to use a database with the dbx-module, the module must be either linked or loaded into PHP

唯一的模塊DBX支持交談MS SQL Server是mssql_ family。該擴展名是no longer available in Windows PHP versions 5.3 or later

如果您使用的是Linux操作系統,並且正在使用操作系統提供的PHP版本,那麼您可能可以安裝它。尋找php-mssqlphp53-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來代替它。

+0

http://ca2.php.net/manual/en/ref.pdo-dblib.php在非windows環境。 –

+0

@E_p啊,細節都很精美。看起來他們只是在* Windows *版本的PHP 5.3+中停用它。我相應地更新了我的答案。 – Charles