How to connect to mssql using pdo through PHP and Linux?
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
Connecting to MSSQL server via php-pdo?
Your problem is that you have not installed either the sql server client or the Microsoft pdo drivers on your machine. Please do that and make sure you can connect via a udp file.
Search SQL server client install and Microsoft pdo drivers
php pdo connection to mssql instance
Every MSSQL server instance runs on its own port number.
You can configure the MSSQL Server instance to use a fixed port number instead of a dynamic one (which is the default).
Once you've configure a fixed port, you can simply connect to that port number using PDO. There is no further need to reference the instance in the dsn or any other setting.
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");
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.
Related Topics
Calling C/C++ Library Function from PHP
PHP Exec() Will Not Execute Shell Command When Executed via Browser
Using PHP to Populate a <Select></Select> Dropdown
How to Redirect Stdout to a File in PHP
How to Get PHP to Produce a Backtrace Upon Errors
How to Add an Order by Clause Using Codeigniter's Active Record Methods
PHP Return Only Duplicated Entries from an Array
Using Simplexml to Read Rss Feed
Read Large Data from CSV File in PHP
How to Modify Xml File Using PHP
Find Out Which Class Called a Method in Another Class
What Does This Mean in Documentation: Square Bracket Followed by Comma ( [, )
PHP Emitting 500 on Errors - Where Is This Documented
How to Get Customer Details from an Order in Woocommerce
How to Get System Environment Variables into PHP While Running Cli & Apache2Handler