Share via


Microsoft Drivers 5.3.0 for PHP for SQL Server Released!

Hi all,

We are excited to announce the production ready release for the Microsoft Drivers 5.3.0 for PHP for SQL Server. The driver enables access to SQL Server, Azure SQL Database, Azure SQL Managed Instance, and Azure SQL DW from PHP 7.0-7.2 applications on Linux, Windows and macOS.

Notable items about the 5.3.0 release since 5.2.0:

Added

  • Added support for Azure Key Vault for Always Encrypted functionality. Always Encrypted functionality is supported on Linux and macOS through Azure Key Vault
  • Added support for connection resiliency on Linux and macOS (requires version 17.2 or higher of the ODBC driver)
  • Added support for macOS High Sierra (requires version 17 or higher of the ODBC driver)
  • Added support for Ubuntu 18.04 (requires version 17.2 or higher of the ODBC driver)

Fixed

  • Issue #577 - Idle Connection Resiliency doesn't work with Column Encryption enabled connections (fixed in MS ODBC Driver 17.1)
  • Issue #678 - Idle Connection Resiliency doesn't work with Connection Pooling (fixed in MS ODBC Driver 17.1)
  • Issue #699 - Binding output parameters fails when the query in the stored procedure returns no data. The test case has been added to the test lab.
  • Issue #705 - Always Encrypted - Retrieving a negative decimal value (edge case) as output parameter causes truncation
  • Issue #706 - Always Encrypted - Cannot insert double with precision and scale (38, 38)
  • Issue #707 - Always Encrypted - Fetching decimals / numerics as output parameters bound to PDO::PARAM_BOOL or PDO::PARAM_INT returns floats, not integers
  • Issue #735 - Extended the buffer size for PDO::lastInsertId so that data types other than integers can be supported
  • Pull Request #759 - Removed the limitation of binding a binary as inout param as PDO::PARAM_STR with SQLSRV_ENCODING_BINARY
  • Pull Request #775 - Fixed the truncation problem for output params with SQL types specified as SQLSRV_SQLTYPE_DECIMAL or SQLSRV_SQLTYPE_NUMERIC

Limitations

  • No support for inout / output params when using sql_variant type
  • In Linux and macOS, setlocale() only takes effect if it is invoked before the first connection. Attempting to set the locale after connecting will not work
  • Always Encrypted requires MS ODBC Driver 17+
    • Only Windows Certificate Store and Azure Key Vault are supported. Custom Keystores are not supported
    • Issue #716 - With Always Encrypted enabled, named parameters in subqueries are not supported
    • Always Encrypted limitations

Known Issues

  • Connection pooling on Linux or macOS is not recommended with unixODBC < 2.3.6
  • When pooling is enabled in Linux or macOS
    • unixODBC <= 2.3.4 (Linux and macOS) might not return proper diagnostic information, such as error messages, warnings and informative messages
    • due to this unixODBC bug, fetch large data (such as xml, binary) as streams as a workaround. See the examples here
  • With ColumnEncryption enabled, calling stored procedures with XML parameters does not work (Issue #674)

Survey

Let us know how we are doing and how you use our driver by taking our pulse survey: https://aka.ms/mssqlphpsurvey

Get Started

Direct downloads can be found on the Microsoft website or the Github release tag.

David Engel