• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • MS SQL Server (PDO)

    PDO_SQLSRV是一个驱动程序,它实现了PHP数据对象(PDO)接口,允许从PHP访问MS SQL Server(从SQL Server 2005开始)和SQL Azure数据库。

    安装

    PDO_SQLSRV扩展名是通过向PHP添加适当的DLL文件来启用的扩展目录和php.ini文件的相应条目。这个PDO_SQLSRV下载提供了8个驱动程序文件,其中4个用于PDO支持。如果运行的是非线程安全的PHP(PHP 5.3),请使用PHP_pdo_sqlsrv_53_nts.dll文件。(如果使用IIS作为网络服务器)。如果运行的是线程安全的PHP,请使用PHP_pdo_sqlsrv_53_ts.dll文件。类似地,对于PHP 5.4,使用PHP_pdo_sqlsrv_54_nts.dll或PHP_pdo_sqlsrv_54_ts.dll取决于您的PHP安装是非线程安全的还是线程安全的。

    The most recent version of the driver is available for download here: » SQLSRV download. If you need support for PHP 5.2 and/or PHP compiled with VC6, use the 2.0 release of the driver: » SQLSRV 2.0 download. The driver sources are hosted in a » public repository.

    For more information about system requirements, see » SQLSRV System Requirements.

    The PDO_SQLSRV extension is only compatible with PHP running on Windows. For Linux, see ODBC and » Microsoft's SQL Server ODBC Driver for Linux.

    预定义常量

    下列常量由此驱动定义,且仅在扩展编译入 PHP或在运行时动态载入时可用。另外,使用此驱动时,仅会使用这些驱动特定的常量。使用其他驱动的驱动特定的常量可能会导致不可预见的情况。如果代码可运行于多个驱动,PDO::getAttribute()可被用于获取PDO_ATTR_DRIVER_NAME属性以检查驱动。

    PDO::SQLSRV_TXN_READ_UNCOMMITTED (integer)
    This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Uncommitted.
    PDO::SQLSRV_TXN_READ_COMMITTED (integer)
    This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Read Committed.
    PDO::SQLSRV_TXN_REPEATABLE_READ (integer)
    This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Repeateable Read.
    PDO::SQLSRV_TXN_SNAPSHOT (integer)
    This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Snapshot.
    PDO::SQLSRV_TXN_SERIALIZABLE (integer)
    This constant is an acceptable value for the SQLSRV DSN key TransactionIsolation. This constant sets the transaction isolation level for the connection to Serializable.
    PDO::SQLSRV_ENCODING_BINARY (integer)
    Specifies that data is sent/retrieved as a raw byte stream to/from the server without performing encoding or translation. This constant can be passed to PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
    PDO::SQLSRV_ENCODING_SYSTEM (integer)
    Specifies that data is sent/retrieved to/from the server as 8-bit characters as specified in the code page of the Windows locale that is set on the system. Any multi-byte characters or characters that do not map into this code page are substituted with a single byte question mark (?) character. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
    PDO::SQLSRV_ENCODING_UTF8 (integer)
    Specifies that data is sent/retrieved to/from the server in UTF-8 encoding. This is the default encoding. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
    PDO::SQLSRV_ENCODING_DEFAULT (integer)
    Specifies that data is sent/retrieved to/from the server according to PDO::SQLSRV_ENCODING_SYSTEM if specified during connection. The connection's encoding is used if specified in a prepare statement. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn, and PDOStatement::bindParam.
    PDO::SQLSRV_ATTR_QUERY_TIMEOUT (integer)
    A non-negative integer representing the timeout period, in seconds. Zero (0) is the default and means no timeout. This constant can be passed to PDOStatement::setAttribute, PDO::setAttribute, and PDO::prepare.
    PDO::SQLSRV_ATTR_DIRECT_QUERY (integer)
    Indicates that a query should be executed directly, without being prepared. This constant can be passed to PDO::setAttribute, and PDO::prepare. For more information, see » Direct and Prepared Statement Execution.

    Table of Contents

    • PDO_SQLSRV DSN — Connecting to MS SQL Server and SQL Azure databases
    An updated driver compatible with both PHP 7.0 and Linux is available on the PHP-7.0-Linux branch of https://github.com/Microsoft/msphpsql/
    This is more up to date and supports some additional features over the ODBC / DBLIB drivers.
    It is currently considered an 'Early Technical Preview' and hence has some limitations, but in my experience it has been stable.
    As of 12/12/2014, Microsoft has officially released Version 3.1.
    Support for 5.5 has 4 drivers
    php_pdo_sqlsrv_55_nts.dll
    php_pdo_sqlsrv_55_ts.dll
    php_sqlsrv_55_nts.dll
    php_sqlsrv_55_ts.dll
    Note: Version 3.1 now supports PHP 5.5 and requires Microsoft ODBC Driver 11 (or higher) 
    You can downlod the new driver from 
    http://www.microsoft.com/en-us/download/details.aspx?id=20098
    SQLSRV 3.2 is now available from Microsoft that supports PHP 5.6
    http://www.microsoft.com/en-us/download/details.aspx?id=20098
    Watch out!
    If you use PDO SQLSRV on windows 7, using 32 bit php on XAMMP, you might encounter driver problems : "This extension requires the Microsoft ODBC Driver 11 for SQL Server to communicate with SQL Server"
    The reason, Microsoft 32-bit ODBC driver doesn't install properly on 64-bit Windows 7.
    Check the solution to PDO SQLSRV driver problem here in StackOverflow
    https://stackoverflow.com/a/46245990/1330248
    Note that Microsoft has not been updating this driver for some time. There are unofficial builds for PHP 5.5 based on patches against the source code head revision (from codeplex), and unconfirmed rumors that getting the source to build with PHP 5.6 is difficult.
    Official versions have been released only for PHP 5.2, 5.3 and 5.4.
     
    These problems probably apply to both the PDO driver (pdo_sqlsrv) and the non-PDO driver (sqlsrv extension), since they seem to be built and released together.

    上篇:4D(PDO)

    下篇:PDOException异常类