【问题标题】:Call to undefined function sqlsrv_connect() - Troubleshooting调用未定义的函数 sqlsrv_connect() - 故障排除
【发布时间】:2024-05-21 19:15:02
【问题描述】:

系统信息

CMS:WordPress

网络服务器:XAMPP

PHP 版本:5.5.30

MS 管理工作室 17

目标

使用 PHP 建立 MSSQL 数据库连接

做了什么

  1. 已下载 SQLSRV 驱动程序
  2. 复制文件php_pdo_sqlsrv_55_nts.dllphp_pdo_sqlsrv_55_ts.dll到目录C:\xampp\php\ext
  3. 在 php.ini 文件的动态扩展部分添加以下行:extension=php_pdo_sqlsrv_55_ts.dllextension=php_pdo_sqlsrv_55_nts.dll
  4. 重新启动的 Web 服务器
  5. 已确认 sqlsrv 在 phpinfo() 中列出

代码

$serverName = "technology-pc\sqlexpress";

// The connection will be attempted using Windows Authentication.
$connectionInfo = array( "Database"=>"example_db");
$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));
}

错误

调用未定义函数 sqlsrv_connect()

【问题讨论】:

    标签: php sql-server wordpress database-connection sqlsrv


    【解决方案1】:

    您可能编辑了错误的 php.ini 文件。使用 php 信息检查正确的 php.ini 文件。

    你可以使用这个脚本:

    <?php echo phpinfo(); ?>
    

    或者,如果您有 CLI 访问权限,请键入 php -i 以获取列出的信息。 检查 php.ini 文件的正确路径。

    【讨论】:

      【解决方案2】:

      试试下面的代码连接mssql数据库

      $server = 'dburl.com\MSSQLSERVER, 1433';
      $username = 'uname';
      $password = 'password';
      
      $connectionInfo = array( "Database"=>$database, "UID"=>$username, "PWD"=>$password,"ReturnDatesAsStrings"=>true);
      $conn = sqlsrv_connect( $server, $connectionInfo);
      

      【讨论】:

        【解决方案3】:

        您已将 SQLSRV 驱动程序的 PDO 变体添加到扩展列表中,但尚未添加基本驱动程序 php_sqlsrv_55_ts.dll

        添加到php.ini:

        extension=php_sqlsrv_55_ts.dll
        

        extension=php_sqlsrv_55_nts.dll
        

        此外,您确实应该使用线程安全 (_ts.dll) 或非线程安全 (_nts.dll) 版本的驱动程序,而不是同时使用两者。我相信,当您使用 Apache 服务器时,您应该使用线程安全版本。所以你的 php.ini 应该有:

        extension=php_sqlsrv_55_ts.dll
        extension=php_pdo_sqlsrv_55_ts.dll
        

        【讨论】:

        • 感谢您提请我注意。现在完美运行。