【问题标题】:Cannot connect to SQL Server with PHP script无法使用 PHP 脚本连接到 SQL Server
【发布时间】:2021-03-26 10:01:55
【问题描述】:

我运行 SQL Server 2016。我尝试通过 PHP 脚本(PHP 版本 8)连接到它。我确实安装了驱动程序并在 php.ini 中添加了路径(与我的 PHP 版本相同):

...
extension=pdo_sqlsrv_80_nts
extension=pdo_sqlsrv_80_ts
extension=sqlsrv_80_nts
extension=sqlsrv_80_ts
...

这是我的脚本:

$serverName = "<ServerName>";
$connectionInfo = array( "Database"=>"<database>", "UID"=>"<user>", "PWD"=>"<pwd>");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}

我收到以下错误:

Array
(
    [0] => Array
        (
            [0] => IM006
            [SQLSTATE] => IM006
            [1] => 0
            [code] => 0
            [2] => [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
            [message] => [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
        )

    [1] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 5701
            [code] => 5701
            [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed database context to '<database>'.
            [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed database context to '<database>'.
        )

    [2] => Array
        (
            [0] => 01000
            [SQLSTATE] => 01000
            [1] => 5703
            [code] => 5703
            [2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed language setting to us_english.
            [message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Changed language setting to us_english.
        )

)

知道有什么问题吗? 谢谢你的帮助

【问题讨论】:

标签: php sql-server connect


【解决方案1】:

从 PHP 7 升级到 8 后我遇到了同样的问题。正如这里的一些评论者所提到的,我的 PDO 代码 (pdo_sqlsrv) 仍然有效。但是旧的非 PDO 代码 (sqlsrv) 得到了与您描述的相同的错误。 我开始将该代码切换到 PDO,并会在可能的情况下继续进行。但后来我意识到更新我的 SQL Server 驱动程序解决了这个问题。您可以通过谷歌搜索“为 SQL Server 下载 ODBC 驱动程序”找到这些驱动程序。您将需要版本 17 或更高版本。

【讨论】:

【解决方案2】:

我最近偶然发现了同样的问题。对我来说 sqlsrv_query 将警告作为错误抛出。我通过将sqlsrv_configure('WarningsReturnAsErrors',0); 放在查询代码上方来解决此问题。

更新: 您需要更新 ODBC 驱动程序的版本。根据article,17.4.2 以下的驱动程序存在已知问题。 下载最新的 ODBC here.

【讨论】:

  • 谢谢,这也帮助了我:-)
【解决方案3】:

在关键字“升级 odbc 驱动程序”击中我之前,我一直在这个确切的问题上停留了几天。我一升级,问题就解决了。 https://docs.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2014-11-07
    • 2016-07-02
    • 1970-01-01
    • 2017-01-27
    • 2019-10-14
    • 2015-07-21
    • 2012-10-29
    相关资源
    最近更新 更多