如何通过PHP和Linux使用PDO连接到MSSQL?

27

我正在尝试使用以下代码创建一个新的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 库。

我的 php.ini 设置为:

ssql

MSSQL Support   enabled
Active Persistent Links     0
Active Links    1
Library version     FreeTDS

Directive   Local Value Master Value
mssql.allow_persistent  On  On
mssql.batchsize 0   0
mssql.charset   no value    no value
mssql.compatability_mode    Off Off
mssql.connect_timeout   5   5
mssql.datetimeconvert   On  On
mssql.max_links Unlimited   Unlimited
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 Off Off
mssql.textlimit Server default  Server default
mssql.textsize  Server default  Server default
mssql.timeout   60  60
4个回答

31

2
您需要在php.ini中启用pdo_dblib.so,并在Linux下设置FreeTDS。 - James
pdo_dblib在PHP 5.4+中已经不再可用... 我找不到合适的解决方案来解决这个问题。 - Dominick
@James PHP的Microsoft PDO_SQLSRV是否已经被弃用,或者使用它没有问题? - Honinbo Shusaku
@James,我误解了你的回答,认为你不能在mssql中使用PDOs,但我猜那个PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");是你不能使用的,我需要导入MS驱动程序。 - Honinbo Shusaku
正确的是,在PHP 5.3中停止提供“mssql”,而“sqlsrv”和“dblib”是当前的驱动程序(据我所知,已经有一段时间了)。 - James
显示剩余3条评论

5

我正在运行Ubuntu 14.04。尝试连接MSSQL时出现“未捕获的异常'PDOException',消息为'找不到驱动程序'”。看起来我缺少了dblib/sybase PHP扩展。

我需要运行以下命令:

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

现在运行良好。

1
php-sybase包对我解决了这个问题。我不需要安装其他的包。 - Jefferson Lima

1

尝试

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

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

或者

$hostname.','.$port;

2
我收到的错误信息是未捕获的异常 'PDOException',消息为 '找不到驱动程序' - richie

0

卡尔·威尔伯(Karl Wilbur)发布的dblib/sybase PHP扩展提示对我很有用。 现在,LimeSurvey的预安装检查页面显示:

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

只需确保找到并安装与您正在使用的PHP版本相对应的版本即可;

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

干杯,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接