Microsoft SQL Server 函数 (PDO_SQLSRV)

简介

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

安装

驱动程序的最新版本可在此处下载:» SQLSRV 下载。驱动程序源代码托管在 » 公共存储库 中。

有关系统要求的更多信息,请参见 » SQLSRV 系统要求

在 Windows 上,PDO_SQLSRV 扩展通过下载并将相应的 DLL 文件添加到 PHP 扩展目录以及在 php.ini 文件中添加相应的条目来启用。

在 Linux 和 macOS 上,可以使用 » PECL 安装 PDO_SQLSRV 扩展。有关详细信息,请参见 » 安装教程

预定义常量

以下常量由此驱动程序定义,并且仅在扩展已编译到 PHP 中或在运行时动态加载时可用。此外,这些驱动程序特定的常量仅应在使用此驱动程序时使用。在其他驱动程序中使用驱动程序特定的属性可能会导致意外行为。可以使用 PDO::getAttribute() 获取 PDO::ATTR_DRIVER_NAME 属性来检查驱动程序,如果您的代码可以在多个驱动程序上运行。

PDO::SQLSRV_TXN_READ_UNCOMMITTED (int)
此常量是 SQLSRV DSN 键 TransactionIsolation 的可接受值。此常量将连接的事务隔离级别设置为未提交读。
PDO::SQLSRV_TXN_READ_COMMITTED (int)
此常量是 SQLSRV DSN 键 TransactionIsolation 的可接受值。此常量将连接的事务隔离级别设置为提交读。
PDO::SQLSRV_TXN_REPEATABLE_READ (int)
此常量是 SQLSRV DSN 键 TransactionIsolation 的可接受值。此常量将连接的事务隔离级别设置为可重复读。
PDO::SQLSRV_TXN_SNAPSHOT (int)
此常量是 SQLSRV DSN 键 TransactionIsolation 的可接受值。此常量将连接的事务隔离级别设置为快照。
PDO::SQLSRV_TXN_SERIALIZABLE (int)
此常量是 SQLSRV DSN 键 TransactionIsolation 的可接受值。此常量将连接的事务隔离级别设置为可序列化。
PDO::SQLSRV_ENCODING_BINARY (int)
指定数据以原始字节流的形式发送/接收,而不执行编码或转换。此常量可以传递给 PDOStatement::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。
PDO::SQLSRV_ENCODING_SYSTEM (int)
指定数据以系统上设置的 Windows 本地语言的代码页中指定的 8 位字符的形式发送/接收。任何多字节字符或无法映射到此代码页的字符将被替换为单个字节问号 (?) 字符。此常量可以传递给 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。
PDO::SQLSRV_ENCODING_UTF8 (int)
指定数据以 UTF-8 编码的形式发送/接收。这是默认编码。此常量可以传递给 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。
PDO::SQLSRV_ENCODING_DEFAULT (int)
指定如果在连接期间指定,数据将根据 PDO::SQLSRV_ENCODING_SYSTEM 发送/接收。如果在准备语句中指定,则使用连接的编码。此常量可以传递给 PDOStatement::setAttribute、PDO::setAttribute、PDO::prepare、PDOStatement::bindColumn 和 PDOStatement::bindParam。
PDO::SQLSRV_ATTR_QUERY_TIMEOUT (int)
一个非负整数,表示以秒为单位的超时时间。零 (0) 是默认值,表示没有超时。此常量可以传递给 PDOStatement::setAttribute、PDO::setAttribute 和 PDO::prepare。
PDO::SQLSRV_ATTR_DIRECT_QUERY (int)
表示查询应直接执行,而不会被准备。此常量可以传递给 PDO::setAttribute 和 PDO::prepare。有关更多信息,请参见 » 直接和准备好的语句执行

目录

添加注释

用户贡献的注释 4 个注释

Peter
9 年前
SQLSRV 3.2 现已从 Microsoft 提供,支持 PHP 5.6

http://www.microsoft.com/en-us/download/details.aspx?id=20098
ian at helastel dot com
7 年前
https://github.com/Microsoft/msphpsql/ 的 PHP-7.0-Linux 分支上提供了一个与 PHP 7.0 和 Linux 兼容的更新驱动程序。

此驱动程序更新并比 ODBC / DBLIB 驱动程序支持了一些额外的功能。

目前它被认为是“早期技术预览”,因此有一些限制,但在我的经验中它一直很稳定。
John P
9 年前
截至 2014 年 12 月 12 日,Microsoft 正式发布了 3.1 版。

5.5 的支持有 4 个驱动程序
php_pdo_sqlsrv_55_nts.dll
php_pdo_sqlsrv_55_ts.dll
php_sqlsrv_55_nts.dll
php_sqlsrv_55_ts.dll

注意:3.1 版现在支持 PHP 5.5,并需要 Microsoft ODBC 驱动程序 11(或更高版本)

您可以从以下位置下载新的驱动程序
http://www.microsoft.com/en-us/download/details.aspx?id=20098
fleduc dot perso at gmail dot com
6 年前
小心!

如果您在 Windows 7 上使用 PDO SQLSRV,在 XAMMP 上使用 32 位 php,您可能会遇到驱动程序问题:“此扩展需要 Microsoft ODBC 驱动程序 11 for SQL Server 才能与 SQL Server 通信”

原因是 Microsoft 32 位 ODBC 驱动程序无法在 64 位 Windows 7 上正确安装。

在 StackOverflow 中查看 PDO SQLSRV 驱动程序问题的解决方案

https://stackoverflow.com/a/46245990/1330248
To Top