MSSQL Compat is a small and simple drop-in library that allows your pre-7 PHP project, that uses MSSQL via mssql_* functions ( eg mssql_connect() et al ), to work transparently with PDO DBLib by providing the missing functions as wrappers around the equivalent PDO syntax - and all that with a single line!
I recently started migrating internal web applications to new servers that use PHP7.
Thus I stumbled on a couple of old applications that use MSSQL with PHP, which I dearly hoped to avoid rewriting and debugging now that PHP7 has deprecated the mssql_* family of functions.
The result is this single-file solution: just include it before your first mssql_* call, and it will transparently wrap them to the equivalent PDO calls.
- This library is not a security enhancement by any measure. It assumes that your program logic escapes what needs to be escaped, since you cannot benefit from PDO goodness without changing the function syntax.
- That being said, kindly let me know if you can provide better security in the given code.
- It is not meant as a means to develop new software in PHP7 using mssql_* functions - use PDO or similar!
MSSQL-Compat requires the bare basics for PHP7 to be able to talk to MSSQL - namely:
Hint: All of the above are easily usable via repos such as IUS or Remi
Just download and add an include to this library on the top of the old application index.php
file.
<?php
include("path/to/mssql_compat.php");
# Insert old application logic here
$ composer require hexblot/mssql-compat
If your app doesn't already have one, add a require towards the autoload.php
file generated by composer in your index.php
:
<?php
require __DIR__.'/path/to/vendor/autoload.php';
This is the list of the functions that are currently covered. They were sufficient for my needs, but, understandably, you may need more for your projects. Let me know in the issues - patches are of course very welcomed!
- mssql_bind
- mssql_close
- mssql_connect
- mssql_data_seek
- mssql_execute
- mssql_fetch_array
- mssql_fetch_assoc
- mssql_fetch_batch
- mssql_fetch_field
- mssql_fetch_object
- mssql_fetch_row
- mssql_field_length
- mssql_field_name
- mssql_field_seek
- mssql_field_type
- mssql_free_result
- mssql_free_statement
- mssql_get_last_message
- mssql_guid_string
- mssql_init
- mssql_min_error_severity NOTE: Placeholder only to avoid errors!
- mssql_min_message_severity NOTE: Placeholder only to avoid errors!
- mssql_next_result
- mssql_num_fields
- mssql_num_rows
- mssql_pconnect
- mssql_query
- mssql_result
- mssql_rows_affected
- mssql_select_db