我正在尝试将 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.msi
,SQLSRV20.exe
但SQLSRV30.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
就您的情况而言),并且Y
或ts
代表nts
您是否安装了线程安全/非线程安全的 PHP 版本。这些 DLL 应该都位于您的 PHP 安装ext
文件夹中。