微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用 PHP 脚本连接到 SQL Server

如何解决无法使用 PHP 脚本连接到 SQL Server

我运行 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.
        )

)

知道哪里出了问题吗? 感谢您的帮助

phpinfo()

phpinfo()

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。