2012-06-28 37 views
4

我目前正試圖連接到MSSQL 2012 Express上的本地數據庫。PDO MSSQL服務器 - 未找到驅動程序

我已經下載並安裝從http://www.microsoft.com/en-us/download/details.aspx?id=20098

微軟官方的驅動程序,我得到某種SQLSRV節在我的phpinfo()。但是當我嘗試創建一個新的PDO對象時,它說它沒有驅動程序。我可以理解它,因爲它沒有在phpinfo()PDO部分提及,但它有它自己的部分+ get_loaded_extensions也顯示了sqlsrv。我想這是從官方MS驅動程序?我正在使用php_sqlsrv_53_nts.dll 與我的Zend服務器CE 5.6與PHP 5.3.9

現在據我瞭解,我下載了錯誤的驅動程序,應該嘗試一個由PECL管理器帶來的?只有源代碼可用,顯然我在Windows機器上,所以我可以忘記我自己需要編譯的所有東西 - 實際上在使用powershell和pecl/pear安裝時遇到了後綴錯誤。

有沒有人解決這個問題?任何幫助非常讚賞

一切順利, 理查德

+0

是否啓用在php.ini PDO MSSQL? – Leri

+0

@PLB是的,在我的'extension = php_sqlsrv_53_nts.dll'之前,但它沒有改變。我也重啓了我的Apache幾次。 – Richard

+0

但仍然看看[這些步驟](http://hk2.php.net/manual/en/pdo.installation.php)或許你錯過了一些東西。 – Leri

回答

0

好的。我想這只是其中一天。

我得到了錯誤的擴展從MS提供的加載。我需要使用php_pdo_sqlsrv_53_nts 而不是 php_sqlsrv_53_nts

感謝所有幫助

+0

好吧,如果MS提供這種方法,那麼:) –

2

PDO擴展是不一樣的本地驅動程序微軟提供。對於PDO,您必須在您的php.ini中啓用

extension=php_pdo_mssql.dll 

正常情況下,該文件(php_pdo_mssql.dll)應該位於您的PHP擴展目錄(C:... \ php \ ext)中。如果它不在那裏,你可以從http://windows.php.net/download/下載PHP,並從那裏取得一個包的擴展(帶一個與你的PHP版本相對應的擴展)。

//編輯:剛剛閱讀最新評論。這個擴展現在可以使用很長時間,可以認爲是可行的。如果您不允許使用它,您必須重寫您的代碼以使用本機驅動程序爲PHP提供的功能。

1

另一種可能是使用ODBC驅動程序這是默認包含在PHP擴展,你仍然可能要取消其註釋,在你的php.ini雖然。

extension=php_pdo_odbc.dll 

不要忘記之後重新啓動服務器;-)

,然後用它像這樣:

$db = new PDO('odbc:Driver={SQL Server};Server=192.168.x.x;Database=DatabaseName; Uid=User;Pwd=Password'); 
$stmt = $db->query("SELECT the_usual FROM aTable WHERE all='well'");