0

我正在尝试从另一台机器 2 上的 PHP 代码连接到机器 1 上的 SQL Server 2008。我正在使用 PHP 5.4.7、XAMPP 1.8.1,我已将 sql server dll 复制到 PHP/ext 文件夹并修改了 php.ini 文件。

现在,当我尝试连接到 SQL 服务器时,出现以下错误。

Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => 此扩展需要 Microsoft SQL Server 2012 Native Client . 访问以下 URL 以下载适用于 x86 的 Microsoft SQL Server 2012 Native Client ODBC 驱动程序:http: //go.microsoft.com/fwlink/ ?LinkId=163712 [message] => 此扩展需要 Microsoft SQL Server 2012 Native Client . 访问以下 URL 以下载适用于 x86 的 Microsoft SQL Server 2012 Native Client ODBC 驱动程序:http: //go.microsoft.com/fwlink/ ?LinkId=163712) [1] => Array ( [0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC Driver Manager] 找不到数据源名称并且没有指定默认驱动程序 [message] => [Microsoft][ODBC Driver Manager] 找不到数据源名称并且没有指定默认驱动程序))

我的PHP代码如下 -

<?php
//phpinfo(); 
$server = "sql server\express,1433"; //serverName\instanceName, portNumber (default is 1433)
$uid="username";
$pwd="password";
$connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=>"rod_prd_tmart");
$conn = sqlsrv_connect( $server, $connectionInfo) ;

if($conn) 
{
   echo "Connection established.\n";
} else
{
   echo "Connection could not be established in this text.\n";
   die( print_r( sqlsrv_errors(), true));
}

sqlsrv_close( $conn);
?>

请帮我解决这个问题。谢谢。

4

1 回答 1

0

考虑使用PDO以获得更大的灵活性:

//$pdo = new PDO("sqlsrv:Server=$hostname;Database=$dbname;", $username, $password);  // works with proper driver for PHP.
$pdo = new PDO("odbc:Driver={SQL Server};Server=$hostname;Database=$dbname;", $username, $password);  // works with proper driver for ODBC and PHP ODBC.

由于奇怪的编译器版本不兼容,我无法让第一行工作,但在安装Microsoft ODBC Driver 11 for SQL Server后,第二行工作正常

根据 ,PHP 5.3.0 版具有内置的 ODBC 支持,php.ini但这里仍然列出了一个活动的extension=php_pdo_odbc.dll

于 2014-10-08T15:35:23.363 回答