使用pdo通过php和linux连接到mssql

时间:2011-05-10 17:21:24

标签: php sql-server database connection pdo

我正在尝试使用以下代码进行新的PDO连接。

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 On On mssql.max_links无限无限
mssql.max_persistent Unlimited Unlimited
mssql.max_procs Unlimited Unlimited
mssql.min_error_severity 10 10
mssql.min_message_severity 10 10
mssql.secure_connection关闭关 mssql.textlimit服务器默认服务器默认

mssql.textsize服务器默认服务器默认

mssql.timeout 60 60

由于

4 个答案:

答案 0 :(得分:31)

PDO mssql驱动程序已不复存在,使用sqlsrv(在php窗口下)或dblib(在php linux下)

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

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

答案 1 :(得分:4)

我正在运行Ubuntu 14.04。试图连接到MSSQL我得到了#34;未捕获的异常' PDOException'有消息'无法找到驱动程序'"。似乎我错过了dblib / sybase PHP扩展。

我必须跑:

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

现在工作正常。

答案 2 :(得分:1)

尝试

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

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

OR

$hostname.','.$port;

答案 3 :(得分:0)

Karl Wilbur发表的dblib / sybase PHP扩展技巧对我有用。 现在会显示LimeSurvey的预安装检查页面

PHP PDO驱动程序库-Microsoft SQL Server(dblib),MySQL

只需确保找到并安装与您使用的PHP版本一致的版本即可。

Prompt>sudo apt-get install php<appropriate version>-sybase freetds-common libsybdb5 Prompt>sudo apache2ctl restart

干杯