【问题标题】:issue integrating php with sqlserver将php与sqlserver集成的问题
【发布时间】:2015-08-11 05:16:32
【问题描述】:

这是我第一次将 php 与 SQL Server 集成。上下文中的 SQL 服务器位于同一 LAN 上的另一台物理计算机上。我正在使用下面解释的配置:

  • php:5.5版
  • SQL Server:2005 Express
  • php 驱动程序:sqlsrv 3.2
  • 线程安全:禁用

我正面临以下错误:

无法建立连接。
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [代码] => -49 [2] => 这个 扩展需要 Microsoft SQL Server 2012 Native Client。使用权 以下 URL 下载 Microsoft SQL Server 2012 Native x86 的客户端 ODBC 驱动程序: http://go.microsoft.com/fwlink/?LinkId=163712 [消息] => 这个 扩展需要 Microsoft SQL Server 2012 Native Client。使用权 以下 URL 下载 Microsoft SQL Server 2012 Native x86 的客户端 ODBC 驱动程序: http://go.microsoft.com/fwlink/?LinkId=163712) [1] => 数组 ([0] => IM002 [SQLSTATE] => IM002 [1] => 0 [代码] => 0 [2] => [Microsoft][ODBC Driver Manager] 未找到数据源名称且没有默认驱动程序 指定 [消息] => [Microsoft][ODBC Driver Manager] 数据源 未找到名称且未指定默认驱动程序))。

使用的代码如下:

<?php
$serverName = "TESTSERV\SQLEXPRESS"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbname", "UID"=>"username", "PWD"=>"password");
$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));
}
?>

谁能指导我在这里需要做什么才能成功连接到数据库?

【问题讨论】:

  • 你的代码在哪里不起作用?
  • 嗨@SergeiKovalenko。感谢您的回复。问题中的代码已更新。
  • 您尝试连接的 SQL Server 版本缺少 ODBC 驱动程序。您是否尝试过从包含的 URL 下载驱动程序?
  • 是的,我已经下载了包含 php 5.5 版驱动程序的 sqlsrv3.2。

标签: php sql-server sql-server-express php-5.5


【解决方案1】:

Microsoft SQL Server Driver for PHP 需要安装 Microsoft SQL Server 2012 Native Client,您可以在错误消息中看到。仅下载扩展 dll 是不够的。更多内容可以在官方System Requirements (Microsoft Drivers for PHP for SQL Server)阅读。

版本 3.2 和 3.1 需要用于 SQL Server 的 Microsoft ODBC Driver 11(或更高版本)。要下载 Microsoft ODBC Driver 11 for PHP for SQL Server,请参阅 Microsoft ODBC Driver 11 for SQL Server。

如果您使用的是 SQLSRV 驱动程序,则 sqlsrv_client_info 将返回有关 Microsoft Drivers for PHP for SQL Server 正在使用哪个版本的 SQL Server Native Client 的信息。如果您使用的是 PDO_SQLSRV 驱动程序,您可以使用 PDO::getAttribute 来发现版本。

https://www.microsoft.com/en-us/download/details.aspx?id=36434

下载、安装并尝试刷新您的测试页面。

【讨论】:

  • 谢谢 Kba,你是对的,你的回答成功了。有什么办法可以避免安装 server 2012 吗?我想避免使用 2 个不同版本的 SQL Server(即使它们可能位于不同的服务器上)。
  • 我不明白。如果您安装 Microsoft ODBC Driver 11(来自上面的链接)或 Microsoft SQL Server 2012 Native Client (from here for example),则不会强制您安装另一个 SQL Server 实例。
  • 感谢 kba。 SQL Server 2012 Native Client(安装在运行 php 服务器的机器上)以及 odbc 驱动程序都允许我优雅地正确连接到 SQL Server :)。再次感谢。
  • 我已经在我的 Win7 64bit 上下载并安装了 MS ODBC 驱动程序 11 (amd64)。但它仍然发出相同的错误消息。怎么了?
  • msdn.microsoft.com/en-us/library/cc296170.aspx页面中说3.2只需要MS ODBC驱动11但实际上我们也需要安装2012的SQL Server Native Client。
猜你喜欢
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2015-06-14
相关资源
最近更新 更多