调用未定义的函数sqlsrv_connect() - 故障排除

时间:2017-06-21 13:21:55

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

系统信息

CMS:Wordpress

Web服务器:XAMPP

PHP版本:5.5.30

MS Management Studio 17

目标

使用PHP建立MSSQL数据库连接

已完成的工作

  1. 已下载的SQLSRV驱动程序
  2. 将文件 php_pdo_sqlsrv_55_nts.dll php_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()
  6. 代码

    $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()

3 个答案:

答案 0 :(得分:2)

您已将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

答案 1 :(得分:0)

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

您可以使用此脚本:

<?php echo phpinfo(); ?>

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

答案 2 :(得分:0)

尝试以下代码连接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);