PhpMssql

PhpMssql is a wrapper and a set of utilities for the Microsft SQL Server PDO driver for PHP

 

What advantages does this wrapper offer over the regular PDO?

  • Fix issues in the PDO driver itself such as this one that make your application prompt to data loss.
  • Improve exception handling and detail propagation. When a PDO exception takes place, the wrapper adds information to the Exception including the executed query and the parameters that were bound to it.
  • Encapsulate schema operations in PHP functions so that you won't have to build queries to drop, create and verify the existence of schema objects such as tables, columns, indexes and others.
  • Provide a compatibility layer between the different versions of SQL Server and Azure so that you can seamlessly work with any of them.
  • Append PHP callstacks to queries for debugging purposes.
  • Automaticaly handle column data type bindings for consistency in the usage of the driver.
  • Tools to properly handle binding and retrieving binary data.
  • Advanced database introspection tools: collation, engine version, comments and metadata, etc.
  • Resiliency for concurrent Merge/Upsert operations
  • Connection resiliency for Azure Support

All of these 100% transparent to the developer.

This library is used as a building block to power the 8.x-2.x version Drupal SQL Server Driver for Azure. 

Tested and ready for

Licenses

The licensing scheme is very simple: You buy it once and get access to the source code (private Gitlab repository) + unlimited usage for your projects*. Access to the repository only lasts for a year (12 months). All updates done to the software during that period are included in your license. This is a lifetime license, you can keep using the code even if your access to the repository ends.

You can also buy a discounted bundle that includes the NetPhp library

Choose product
Delivery Instructions: after purchase send an e-mail to info@drupalonwindows.com with a Gitlab e-mail address of your choice. This address/account will be given access to a private GIT repository with the source code.

10 Day money back guarantee: iF YOU FIND A BUG IN OUR SOFTWARE DURING THE FIRST 10 DAYS AFTER PURCHASE THAT WE CANNOT SOLVE YOU GET YOUR MONEY BACK.

 

* YOU ARE ALLOWED TO USE AND MODIFY THE SOURCE CODE, AND TO EMBED it INTO YOUR APPLICATIONS, BUT NOT TO REDISTRIBUTE, RE-LICENSE OR MAKE ANY of the source code PUBLICLY AVAILABLE.

Copyright (C) 2016  David García García - david dot garcia at drupalonwindows dot com
This program is not free software: you can use it and modify it but not convey it or any derivate works.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
A full copy of the license can be obtained here: http://www.drupalonwindows.com/en/content/paidware-terms-and-conditions

Changelog

  • 15/02/2017 - Add support for SQLSRV_ATTR_FETCHES_NUMERIC_TYPE when doing connection attribute introspection.
  • 13/12/2016 - Add driver attributes support.
  • 22/11/2016 - Add composer support.
  • 19/10/2016 - Expand exception coverage for retry logic.
  • 26/09/2016 - Minor fixes for serialized cache items.
  • 23/09/2016 - Add support for Apcu (Linux) or a stub fallback for missing cache backends.
  • 30/06/2016 - Add support for bigint in type binding fixes.
  • 30/06/2016 - Let nextId() receive minimum value as a string.
  • 26/06/2016 - Add license File
  • 22/05/2016 - Scheme::EngineVersionNumber() was reporting the major version always as 0.
  • 22/05/2016 - Add 'engineedition' to Scheme::EngineVersion()
  • 22/05/2016 - Do not rely on exceptions in UserOptions::Get().
  • 08/05/2016 - Fix azure support.
  • 08/05/2016 - Fix for UserOptions::Get()
  • 27/04/2016 - Improve performance of TableExists()
  • 21/04/2016 - Fix wrong exception code.
  • 20/04/2016 - Fix CLREnabled() returning wrong value.
  • 07/04/2016 - Use prepared statements in TableExists()
  • 06/04/2016 - Add proper connection resiliency support. This makes the driver a first class database as a service consumer!
  • 06/04/2016 - Cache the results of TableExists() because they are intensively used on some CMS's.
  • 22/03/2016 - Add DSN building capabilities + overriding mechanism.
  • 18/03/2016 - Fix broken scheme management functions because system names cannot be used like parameters.
  • 08/02/2016 - Propagate the original exception in DoomedTransactionException.
  • 21/01/2016 - Improve table introspection performance + add prefixes to the internal cache to prevent leakage between sites.
  • 16/01/2106 - Improve schema introspection performance.
  • 16/01/2016 - Fix issues with sequence generation.
  • 14/01/2016 - Fix infinite loop.
  • 14/01/2016 - Added PDO options for connection resiliency management + retries on integrity constraint violation failures. Only implemented the latter.
  • 10/01/2016 - Use direct queries as default.
  • 10/01/2016 - Add column meta cache.
  • 04/01/2016 - Various fixes.
  • 18/12/2015 - Fix issue when generating sequences.
  • 15/12/2015 - Add readme.md
  • 01/12/2015 - Initial commit