How to connect to mssql using pdo through PHP and Linux?
79,718
Solution 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
Solution 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.
Solution 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;
Related videos on Youtube
Author by
Amir Fattahpoor
Updated on July 09, 2022Comments
-
Amir Fattahpoor almost 2 years
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
-
Amir Fattahpoor almost 13 yearsThe error message that I get is Uncaught exception 'PDOException' with message 'could not find driver'
-
Amir Fattahpoor almost 13 yearsusing dblib still produces the missing drivers error. "Uncaught exception 'PDOException' with message 'could not find driver'". I find it strange that mssql_connect works fine yet I have to do something in order to get the PDO side working. I'm not very familiar with linux which means that I'm unsure of getting the drivers that I need sorted out?
-
James almost 13 yearsYou need to enable pdo_dblib.so in your php.ini and set up FreeTDS under Linux.
-
shorif2000 about 11 yearshow do you enable pdo_dblib in configure? also I am using centos 5 32bit, how would I set it up?
-
Dominick about 10 yearspdo_dblib no longer works with PHP 5.4+... I can't find a suitable solution to this problem.
-
Honinbo Shusaku over 8 years@James Is the PHP Microsoft PDO_SQLSRV deprecated or is there no problems using it?
-
James over 8 years@Abdul Not that I'm aware of, why do you ask?
-
Honinbo Shusaku over 8 years@James I misunderstood your answer and thought that you can't use PDOs with mssql, but I'm guessing that's the
PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw");
one that you can't use, and I need to import the MS drivers -
James over 8 yearsCorrect, "mssql" stopped being provided with PHP in 5.3 and "sqlsrv" and "dblib" are the current drivers (to my knowledge, it's been a while)
-
Jefferson Lima almost 7 yearsThe php-sybase package solved the problem for me. I didn't need to install the others.