如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5953882/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 23:00:59  来源:igfitidea点击:

How to connect to mssql using pdo through PHP and Linux?

phpsql-serverdatabaseconnectionpdo

提问by richie

I'm trying to for a new PDO connection using the following code.

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

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

I'm not sure what drivers to use? Or how to install them. I can connect perfectly fine using the mssql_connectfunction in PHP but I want to use the PDO library instead.

我不确定要使用什么驱动程序?或者如何安装它们。我可以使用mssql_connectPHP 中的函数完美连接,但我想改用 PDO 库。

My php.inisettings for mssql are:

php.ini对 mssql 的设置是:

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

回答by James

The PDO mssql driver is no more, use sqlsrv(under php windows) or dblib(under php linux)

PDO mssql驱动没有了,使用sqlsrv(php windows下)或者dblib(php linux下)

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

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

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

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

回答by Karl Wilbur

I am running Ubuntu 14.04. Trying to connect to MSSQL I got "Uncaught exception 'PDOException' with message 'could not find driver'". It seems that I was missing the dblib/sybase PHP extension.

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

I had to run:

我不得不跑:

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

Works fine now.

现在工作正常。

回答by csi

Try

尝试

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

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

OR

或者

$hostname.','.$port;

回答by Shivashish

The dblib/sybase PHP extension tip posted by Karl Wilbur worked for me. The pre-installation check page for LimeSurvey now shows

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

PHP PDO driver library- Microsoft SQL Server (dblib), MySQL

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

Just make sure you find and install the version that aligns with the PHP version you are using;

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

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

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

Cheers,

干杯,