Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO和SQL Server使用SQL Server身份验证而不是Windows身份验证_Php_Sql Server_Sql Server 2008_Authentication_Pdo - Fatal编程技术网

Php PDO和SQL Server使用SQL Server身份验证而不是Windows身份验证

Php PDO和SQL Server使用SQL Server身份验证而不是Windows身份验证,php,sql-server,sql-server-2008,authentication,pdo,Php,Sql Server,Sql Server 2008,Authentication,Pdo,我的环境: -Windows Server 2008 R2。 -Apache Web服务器。 -PHP 5.4.7 我刚刚下载并安装了Microsoft Drivers 3.0 for PHP for SQL Server。 我已经在php中包含了“php_pdo_sqlsrv_54_ts.dll” Microsoft在驱动程序中包含了一个有用的chm文件(SQLSRV_Help.chm) 在此帮助文件中,有一个使用windows身份验证的PDO示例: /* Connect using Wind

我的环境:
-Windows Server 2008 R2。
-Apache Web服务器。
-PHP 5.4.7

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

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之间的区别是什么

  • 使用PDO和Windows身份验证
  • 使用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");
    
    提前谢谢

    更新:

    我发现了一个资源:


    构造函数中有可选的第二个和第三个参数,用于指定用户名和密码:

    PDO::_构造

    创建到SQL Server数据库的连接

    语法PDO::_构造($dsn[,$username[,$password [,$driver_选项]]]

    参数

    $dsn:包含前缀名称(始终为sqlsrv)、冒号、, 和服务器关键字。例如“sqlsrv:server=(local)”。你可以 (可选)指定其他连接关键字。请参见连接选项 获取服务器关键字和其他连接的说明 关键词。整个$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"
    );
    

    还提到,在使用PDO_SQLSRV时,不能在连接字符串中使用
    UID
    PWD
    参数。

    构造函数中有可选的第二个和第三个参数,用于指定用户名和密码:

    PDO::_构造

    创建到SQL Server数据库的连接

    语法PDO::_构造($dsn[,$username[,$password [,$driver_选项]]]

    参数

    $dsn:包含前缀名称(始终为sqlsrv)、冒号、, 和服务器关键字。例如“sqlsrv:server=(local)”。你可以 (可选)指定其他连接关键字。请参见连接选项 获取服务器关键字和其他连接的说明 关键词。整个$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"
    );
    

    还提到在使用PDO_SQLSRV时不能在连接字符串中使用
    UID
    PWD
    参数。

    谢谢Salman A。第一部分有一个示例(SQLSRV:server=(local),但没有编写可选部分的示例。我是写“UID=sa;PWD=A”还是“User Id=sa;password=A”?谢谢Salman A。第一部分有一个示例(sqlsrv:server=(local),但没有关于如何编写可选部分的示例。我是写“UID=sa;PWD=A”还是“User Id=sa;password=A”?