2011-05-10 107 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