2

我的环境:
- Windows Server 2008 R2。
- 阿帕奇网络服务器。
- PHP 5.4.7

我刚刚下载并安装了 Microsoft Drivers 3.0 for PHP for SQL Server。
我已将“php_pdo_sqlsrv_54_ts.dll”包含在 php 中。

Microsoft 在驱动程序中包含了一个有用的 chm 文件 (SQLSRV_Help.chm)。

在这个帮助文件中有一个使用 Windows 身份验证的 PDO 示例:

/* Connect using Windows Authentication. */
try {
  $conn = new PDO("sqlsrv:server=$serverName ; Database=AdventureWorks", "", "");
  $conn->setAttribute( PDO::ATTR ERRMOE, PDO::ERRMODE EXCEPTION );
}

但我必须使用 SQL Server 身份验证连接到我们的 MS SQL Server 2008 R2!

连接到 SQL Server 有什么区别

  1. 使用 PDO 和 Windows 身份验证
  2. 使用 PDO 和 SQL Server 身份验证

它只是连接字符串吗?我必须写:

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; UID=sa; PWD=abc");

还是我必须写:

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; User Id=sa; password=abc");

提前致谢

更新:

我找到了一个资源:

http://www.connectionstrings.com/sql-server-2008

4

1 回答 1

4

构造函数中有可选的第二个和第三个参数,它们指定用户名和密码,如下所述

PDO::__构造

创建到 SQL Server 数据库的连接。

语法 PDO::__construct($dsn [,$username [,$password [,$driver_options ]]] )

参数

$dsn:包含前缀名称(始终为 sqlsrv)、冒号和 Server 关键字的字符串。例如“sqlsrv:server=(local)”。您可以选择指定其他连接关键字。有关 Server 关键字和其他连接关键字的描述,请参见连接选项。整个 $dsn 都用引号引起来,因此不应单独引用每个连接关键字。

$用户名:可选。包含用户名的字符串。要使用 SQL Server 身份验证进行连接,请指定登录 ID。要使用 Windows 身份验证进行连接,请指定“”。

$密码:可选。包含用户密码的字符串。要使用 SQL Server 身份验证进行连接,请指定密码。要使用 Windows 身份验证进行连接,请指定“”。

[...]

这意味着您可以使用 PDO + SQL 身份验证连接到 SQL Server,如下所示:

$conn = new PDO(
    "sqlsrv:server=$serverName ; Database=AdventureWorks",
    "sa",
    "strong password"
);

连接选项部分还提到在使用 PDO_SQLSRV 时不能在连接字符串中使用和参数UIDPWD

于 2013-01-17T21:18:38.057 回答