Sqlsrv_connect() 错误

Sqlsrv_connect() 错误

我正在尝试将 PHP 5.3.5 连接到 MS Sql Server 2005。我使用的是 Windows XP SP3。我启用了 sqlsrv 函数,该函数也显示在 phpinfo() 中。我还对 php.ini 扩展进行了一些更改,但一直出现以下错误:

“数据库连接错误Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => 此扩展需要 Microsoft SQL Server 2008 Native Client(SP1 或更高版本)或 Microsoft SQL Server 2008 R2 Native Client ODBC 驱动程序才能与 SQL Server 进行通信。这两个 ODBC 驱动程序目前均未安装。访问以下 URL 下载适用于 x86 的 Microsoft SQL Server 2008 R2 Native Client ODBC 驱动程序: http://go.microsoft.com/fwlink/?LinkId=163712[message] => 此扩展需要 Microsoft SQL Server 2008 Native Client(SP1 或更高版本)或 Microsoft SQL Server 2008 R2 Native Client ODBC 驱动程序才能与 SQL Server 通信。这两个 ODBC 驱动程序目前均未安装。访问以下 URL 下载适用于 x86 的 Microsoft SQL Server 2008 R2 Native Client ODBC 驱动程序: http://go.microsoft.com/fwlink/?LinkId=163712) [1] => Array ( [0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 [message] => [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序 ) ) 1"

我已经安装了sqlncli.msiSQLSRV20.exeSQLSRV30.exe仍然出现同样的错误。

我要连接的程序:

<?php
$server = "Patrik/SQLEXPRESS";
$conInfo = array("Database"=>"ShoppingDetail","UID"=>"Pat1890","PWD"=>"Pat1890");

$con = sqlsrv_connect($server,$conInfo);

if($con==false)
 {
  echo "Error Connecting to database<br>";
   die (print_r(sqlsrv_errors()));
  }
else
{
  echo "Database connection is sucessfully eastablished";
}
?> 

我认为我的编码没有问题。我还启用了 TCP/IP 并使用 IP 地址而不是服务器名称,但问题仍然存在。

答案1

首先验证一下 php.ini

扩展=php_pdo_mssql.dll

扩展=php_pdo_odbc.dll

并尝试使用 PDO

$server = 'host';
$database = 'database';
$username = 'username';
$password = 'password';
$db = new PDO('odbc:Driver={SQL Server}; Server=' . $server . '; Database=' . $database . '; Uid=' . $username . '; Pwd=' . $password . ';');
$query = $db->prepare('...');
$query->execute();

答案2

要使用这些sqlsrv_*函数,请将其添加extension=php_sqlsrv_X_Y.dll到您的 php.ini 中,其中X代表您的 PHP 版本(53就您的情况而言),并且Yts代表nts您是否安装了线程安全/非线程安全的 PHP 版本。这些 DLL 应该都位于您的 PHP 安装ext文件夹中。

相关内容