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;
Share:
79,718

Related videos on Youtube

Amir Fattahpoor
Author by

Amir Fattahpoor

Updated on July 09, 2022

Comments

  • Amir Fattahpoor
    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
    Amir Fattahpoor almost 13 years
    The error message that I get is Uncaught exception 'PDOException' with message 'could not find driver'
  • Amir Fattahpoor
    Amir Fattahpoor almost 13 years
    using 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
    James almost 13 years
    You need to enable pdo_dblib.so in your php.ini and set up FreeTDS under Linux.
  • shorif2000
    shorif2000 about 11 years
    how do you enable pdo_dblib in configure? also I am using centos 5 32bit, how would I set it up?
  • Dominick
    Dominick about 10 years
    pdo_dblib no longer works with PHP 5.4+... I can't find a suitable solution to this problem.
  • Honinbo Shusaku
    Honinbo Shusaku over 8 years
    @James Is the PHP Microsoft PDO_SQLSRV deprecated or is there no problems using it?
  • James
    James over 8 years
    @Abdul Not that I'm aware of, why do you ask?
  • Honinbo Shusaku
    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
    James over 8 years
    Correct, "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
    Jefferson Lima almost 7 years
    The php-sybase package solved the problem for me. I didn't need to install the others.