2011-05-10 118 views
24

我正在嘗試使用以下代碼創建一個新的PDO連接。使用pdo通過php和linux連接到mssql

new PDO("mssql:driver=????;Server={$serverName};Database={$databaseName}", $username, $password, array(PDO::ATTR_PERSISTENT => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 

我不確定使用什麼驅動程序?或者如何安裝它們。我可以使用PHP中的mssql_connect函數完美地連接,但我想使用PDO庫。

請讓我知道,如果你有關於如何解決我的問題或如何能更好地說出我的問題的想法?

爲MSSQL我的php.ini設置:

ssql

MSSQL支持啓用
活動的永久鏈接0
活動鏈接1個
庫版本freetds的

指令本地值主值
mssql.allow_persistent On On
mssql.batchsize 0 0
mssql.charset沒有值沒有值
mssql.compatability_mode關關
mssql.connect_timeout 5 5
mssql.datetimeconvert開開
mssql.max_links無限無限
mssql.max_persistent無限無限
mssql.max_procs無限無限
mssql.min_error_severity 10
mssql.min_message_severity 10
mssql.secure_connection關閉關
mssql.textlimit Server的默認服務器默認
mssql.textsize Server的默認服務器默認
mssql.timeout 60 60

感謝

回答

29

的PDO MSSQL驅動程序沒有了,使用sqlsrv(下PHP Windows)或dblib(下PHP的Linux)

http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

http://www.php.net/manual/en/ref.pdo-dblib.php

+0

使用dblib仍然會產生缺少的驅動程序錯誤。 「帶有消息'未找到驅動程序'的未捕獲的異常'PDOException''」。我發現很奇怪,mssql_connect工作正常,但我必須做些事情才能讓PDO工作。我不是很熟悉linux,這意味着我不確定需要解決哪些驅動程序? – richie 2011-05-12 15:05:12

+2

您需要在您的php.ini中啓用pdo_dblib.so並在Linux下設置FreeTDS。 – James 2011-05-13 17:21:36

+0

如何在配置中啓用pdo_dblib?我也使用centos 5 32bit,我將如何設置它? – shorif2000 2013-03-01 14:09:26

1

嘗試

$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw"); 

$hostname may need to be configured as either... 
$hostname.':'.$port; 

OR

$hostname.','.$port; 
+2

我得到的錯誤消息是 未捕獲的異常'PDOException'消息'找不到驅動程序' – richie 2011-05-11 09:35:37

4

我運行Ubuntu 14.04。試圖連接到MSSQL我得到了「未捕獲異常'PDOException'消息'找不到驅動程序'」。看來我錯過了dblib/sybase PHP擴展。

我不得不跑:

sudo apt-get install php5-sybase freetds-common libsybdb5 \ 
&& sudo apache2ctl restart 

工作正常了。

+0

php-sybase包爲我解決了這個問題。我不需要安裝其他的。 – 2017-05-16 18:11:53