Connect PHP to Mssql Via Pdo Odbc

Connect PHP to MSSQL via PDO ODBC

There are several configuration files you need to have set up. /etc/odbc.ini, /etc/odbcinst.ini and /etc/freetds/freetds.conf (these locations are valid for Ubuntu 12.04 and probably correct for most *nixes).

You'll need to install unixodbc and freetds (not sure what the package names are on CentOS). In Ubuntu this would be apt-get install unixodbc tdsodbc.

For help installing these, look at this question Can't Install FreeTDS via Yum Package Manager

/etc/odbc.ini (this file may be empty)

# Define a connection to a Microsoft SQL server
# The Description can be whatever we want it to be.
# The Driver value must match what we have defined in /etc/odbcinst.ini
# The Database name must be the name of the database this connection will connect to.
# The ServerName is the name we defined in /etc/freetds/freetds.conf
# The TDS_Version should match what we defined in /etc/freetds/freetds.conf
[mssql]
Description = MSSQL Server
Driver = freetds
Database = XXXXXX
ServerName = MSSQL
TDS_Version = 7.1

/etc/odbcinst.ini

# Define where to find the driver for the Free TDS connections.
# Make sure you use the right driver (32-bit or 64-bit).
[freetds]
Description = MS SQL database access with Free TDS
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
#Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount = 1

/etc/freetds/freetds.conf (or you may find it at /etc/freetds.conf)

# The basics for defining a DSN (Data Source Name)
# [data_source_name]
# host = <hostname or IP address>
# port = <port number to connect to - probably 1433>
# tds version = <TDS version to use - probably 8.0>

# Define a connection to the Microsoft SQL Server
[mssql]
host = XXXXXX
port = 1433
tds version = 7.1

You may have to change the tds version = 7.1 line above depending on your version of MSSQL.

You will have to restart apache after you've made these changes.

In your PHP code you'll create your PDO object like this:

$pdo = new PDO("dblib:host=mssql;dbname=$dbname", "$dbuser","$dbpwd");

Note that your username may need to be in the format: domain\username.

Also, you will know that it worked if you execute phpinfo() in your page and search for "freetds" which will show an mssql section with freetds listed as the Library Version.

Connect to SQL Server through PDO using SQL Server Driver

Well that's the best part about PDOs is that it's pretty easy to access any database. Provided you have installed those drivers, you should be able to just do:

$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");

How to use PHP PDO ODBC with SQL Server and Unicode Characters?

No, I don't think you forgot to configure anything. In fact, your explanation is the best I've found so far regarding the long-standing "issues" between PHP and Microsoft ODBC drivers. Those issues are especially puzzling given that the PDO_ODBC page says:

On Windows, PDO_ODBC ... is the recommended driver for connecting to Microsoft SQL Server databases.

However, on Windows they also offer PDO_SQLSRV which actually does appear to work correctly.

So it seems that PDO_ODBC "doesn't have any notion of NVARCHAR", rather than PDO as a whole.

(Similar problems arise when trying to use PHP with Microsoft Access ODBC if Unicode characters are involved)

Conclusion: PHP support for ODBC continues to be a bit of a mess, at least where Microsoft databases are concerned.

How to connect xampp php 7.1.27 to a MsSQL server using pdo?

I found the answer from the comments:

  • Download and install ODBC Driver

  • Configure php.ini file by uncommenting this line:
    extension=php_odbc.dll

  • Restart xampp

  • use this method to connect :

odbc_connect ( "Driver={SQL Server};Server=$servername;Database=$dbname" , $username ,  $password);


Related Topics



Leave a reply



Submit