This is an old revision of the document!
Microsoft SQL Server
Description
There are 2 supported drivers that allow connections to Microsoft SQL Server databases.
mssqlnative
This driver, which runs on both Windows and Linux clients, allows connections to Microsoft SQL Server databases versions 2008 and up, and uses the Microsoft Native Client libraries. This driver is recommended for Windows Clients running PHP 5.3 and higher, and Linux Clients running PHP 7.0 and higher, and provides the fastest PHP connection.
More about the Microsoft SQL Server client for Linux here
mssql
This allows connections from Unix based clients using the freetds libraries. It can be used with version 5.x of PHP
More about the FreeTDS libraries here
SQL Server 2003
Connecting to SQL server 2003 creates a difficulty There is no support for native client connections, and the alternative method, using php_mssql.dll was removed in PHP 5.3. The only alternative is to use a generic ODBC driver that does not require the Microsoft Native Client libraries.
mssqlnative
Specification
Driver Name | mssqlnative |
---|---|
Data Provider | mssqlnative |
Status | Active1) |
Windows | Yes |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
Alternatives
This is the preferred driver for connecting to a SQL server database from both Windows and Linux clients.
The original driver was contributed by Microsoft and provides connections to SQL server databases greater than SQL Server 2003.
- On Windows clients, It requires PHP version 5.3 or greater, Microsoft native client software and the appropriate PHP driver.
- On Linux clients, PHP version 7.0 and higher is required.
Sequences are supported in native mode in SQL Sever 2012, and emulated in earlier versions.
DateTime Fields
The default behavior for the PHP mssqlnative driver is to return date/time fields as a PHP dateTime object, that looks like this:
[RequiredDate] => DateTime Object ( [date] => 1996-08-01 00:00:00.000000 [timezone_type] => 3 [timezone] => America/Denver )
However, in order to improve portability, the default behaviour of the ADOdb mssqlnative driver is to return the date as a string:
[RequiredDate] => 1996-08-01 00:00:00.000000
In order to return the dateTime as an object, the following action is required:
$db = ADONewConnection('mssqlnative'); $db->setConnectionParameter('ReturnDatesAsStrings',false); $db->connect('SERVER\SQLEXPRESS','user','password','NORTHWND');
Unicode Strings
You can set the character set to UTF-8 using:
$db = ADONewConnection('mssqlnative'); $db->setConnectionParameter('characterSet','UTF-8'); $db->connect('SERVER\SQLEXPRESS','user','password','NORTHWND');
Using Windows Authentication
To use Windows, instead of SQL Server authentication, pass NULL as the user and password as shown below
$db = ADONewConnection('mssqlnative'); $db->connect('SERVER\SQLEXPRESS',NULL,NULL,'NORTHWND');
mssql (Unix)
Specification
Driver Name | mssql |
---|---|
Data Provider | mssql |
Status | Active2) |
Windows | No |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
Alternatives
This is the preferred driver for connecting to a SQL server database from Linux/Unix clients. This driver provides access to Microsoft SQL Server databases from unix systems via Freetds
mssql (Windows)
Specification
This driver was the primary connection method to SQL Server databases up to PHP Version 5.2. The windows dll associated with this driver (php_mssql.dll) was removed from the standard PHP distribution in PHP Version 5.3. There is no community support for this driver.
mssqlpo
Specification
Driver Name | mssqlpo |
---|---|
Data Provider | mssql |
Status | Inactive5) |
Windows | No |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
This driver provides undocumented portability extensions to the Unix mssql driver
mssql_n
Specification
Driver Name | mssqlpo |
---|---|
Data Provider | mssql |
Status | Inactive6) |
Windows | No |
Unix | Yes |
ADOdb V5 | Yes |
ADOdb V6 | Yes |
This driver appears to provide Unicode enhancements to the mssql driver