调用未定义函数 sqlsrv_connect() - 疑难解答

Call to undefined function sqlsrv_connect() - Troubleshooting

系统信息

内容管理系统: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));
}

错误

Call to undefined function sqlsrv_connect()

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

您可以使用这个脚本:

<?php echo phpinfo(); ?>

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

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

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