我的环境:
- Windows Server 2008 R2
- Apache Webserver。
- PHP 5.4.7
我刚刚下载并安装了适用于SQL Server的Microsoft Drivers 3.0 for PHP 我已经包含了#34; 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
之间有什么区别它只是连接字符串吗?我必须写:
$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");
提前致谢
更新
我找到了资源:
答案 0 :(得分:3)
构造函数中有可选的第二个和第三个参数,用于指定用户名和密码as described here:
PDO :: __ construct
创建与SQL Server数据库的连接。
语法PDO :: __ construct($ dsn [,$ username [,$ password [,$ driver_options]]])
参数
$ dsn:包含前缀名称(总是sqlsrv)的字符串,冒号, 和Server关键字。例如" sqlsrv:server =(local)"。您可以 可选择指定其他连接关键字请参见连接选项 有关Server关键字和其他连接的说明 关键字。整个$ dsn都是引号,所以每个连接 关键字不应单独引用。
$ username:可选。包含用户姓名的字符串。至 使用SQL Server身份验证连接,指定登录ID。至 使用Windows身份验证连接,指定""。
$ password:可选。包含用户密码的字符串。至 使用SQL Server身份验证连接,指定密码。至 使用Windows身份验证连接,指定""。
[...]
这意味着您可以使用PDO + SQL身份验证连接到SQL Server,如下所示:
$conn = new PDO(
"sqlsrv:server=$serverName ; Database=AdventureWorks",
"sa",
"strong password"
);
connection options section还提到您在使用PDO_SQLSRV时无法在连接字符串中使用UID
和PWD
参数。