Share via


Early technical preview of Microsoft Drivers 4.1.0 for PHP on Windows for SQL Server Released!

Dear PHP Community,

Hi all, we are delighted to share the early technical preview of the Microsoft Driver 4.1.0 for PHP for SQL Server. The new driver enables access to SQL Server, Azure SQL Database and Azure SQL DW from any PHP 7 application.

The major highlights of this release is bug fixes, new functionalities and better test coverage.

Here is a summary of the bug fixes and improvements:

  • SQLSRV_ATTR_FETCHES_NUMERIC_TYPE connection attribute flag is added to PDO_SQLSRV driver to handle numeric fetches from columns with numeric Sql types (only bit, integer, smallint, tinyint, float and real). This flag can be turned on by setting its value in PDO::setAttribute to true, For example, $conn->setAttribute(PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE,true); If SQLSRV_ATTR_FETCHES_NUMERIC_TYPE is set to true the results from an integer column will be represented as an int, likewise, Sql types float and real will be represented as float. Note for exceptions:
    • When connection option flag ATTR_STRINGIFY_FETCHES is on, even when SQLSRV_ATTR_FETCHES_NUMERIC_TYPE is on, the return value will still be string.
    • When the returned PDO type in bind column is PDO_PARAM_INT, the return value from a integer column will be int even if SQLSRV_ATTR_FETCHES_NUMERIC_TYPE is off.
  • Fixed float truncation when using buffered query.
  • Fixed handling of Unicode strings and binary when emulate prepare is on in PDOStatement::bindParam. To bind a unicode string, PDO::SQLSRV_ENCODING_UTF8 should be set using $driverOption, and to bind a string to column of Sql type binary, PDO::SQLSRV_ENCODING_BINARY should be set.
  • Fixed string truncation in bind output parameters when the size is not set and the length of initialized variable is less than the output.
  • Fixed bind string parameters as bidirectional parameters (PDO::PARAM_INPUT_OUTPUT) in PDO_SQLSRV driver. Note for output or bidirectional parameters, PDOStatement::closeCursor should be called to get the output value.

Future Plans

Going forward we plan to expand SQL 16 Feature Support (example: Always Encrypted), build verification/fundamental tests, bug fixes

Getting the Preview Refresh

You can find the latest bits on our Github repository, at our existing address. We provide limited support while in preview on our Github Issues page. As always, we welcome contributions of any kind, be they Pull Requests, or Feature Enhancements. I’d like to thank everyone on behalf of the team for supporting us in our endeavors to provide you with a high-quality driver. Happy downloading!

Meet Bhagdev (meetb@microsoft.com)

MSFTlovesPHP