问题
I'm trying to for a new PDO connection using the following code.
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_connect
function in PHP but I want to use the PDO library instead.
My php.ini
settings for mssql are:
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
回答1:
The PDO mssql driver is no more, use sqlsrv
(under php windows) or dblib
(under php linux)
http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
http://www.php.net/manual/en/ref.pdo-dblib.php
回答2:
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.
I had to run:
sudo apt-get install php5-sybase freetds-common libsybdb5 \
&& sudo apache2ctl restart
Works fine now.
回答3:
Try
$dbh = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
$hostname may need to be configured as either...
$hostname.':'.$port;
OR
$hostname.','.$port;
回答4:
The dblib/sybase PHP extension tip posted by Karl Wilbur worked for me. The pre-installation check page for LimeSurvey now shows
PHP PDO driver library- Microsoft SQL Server (dblib), MySQL
Just make sure you find and install the version that aligns with the PHP version you are using;
Prompt>sudo apt-get install php<appropriate version>-sybase freetds-common libsybdb5
Prompt>sudo apache2ctl restart
Cheers,
来源:https://stackoverflow.com/questions/5953882/how-to-connect-to-mssql-using-pdo-through-php-and-linux