【问题标题】:mssql server giving error for php connectionmssql 服务器为 php 连接提供错误
【发布时间】:2018-10-30 06:36:04
【问题描述】:
$serverName = "192.168.0.245\SASTO"; 
$sqlinformation = array("Database"=>"HCM8","UID"=>"","PWD"=>"");
$conn = sqlsrv_connect($serverName,$sqlinformation);

错误:

警告:sqlsrv_query() 期望参数 1 是资源,布尔值在第 30 行的 C:\xampp\htdocs\test\t.php 中给出 Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => 向 sqlsrv_query 传递了一个无效参数。[消息] => 向 sqlsrv_query 传递了一个无效参数。) )

此连接适用于一台服务器,但其他服务器无法使用此连接进行连接。给出上述错误。

【问题讨论】:

  • 请显示 sqlsrv_query() 调用。谢谢。
  • 你确定这个服务器可以访问192.168.0.245吗?还要检查是否允许用户从此服务器 IP 进行连接。
  • 您还应该为连接添加一些错误处理。这很可能会给你一些为什么连接失败的原因。检查the manual 了解相关信息。请记住,在生产中,您应该记录错误而不是打印它(然后正确处理错误而不是让它破坏代码)。
  • 是的,这个服务器被另一个服务器通过它自己的这个连接访问。但我在我的电脑上使用相同的连接它不工作。
  • 我不确定该评论应该回答什么。 另一个服务器可以连接到该数据库的事实并不意味着当前服务器(失败)可以访问它。

标签: php sql-server pdo sqlsrv


【解决方案1】:

您对sqlsrv_connect() 的调用返回false,我怀疑您在那之后还调用了sqlsrv_query()。始终检查来自sqlsrv_connect() 的结果。

在您的情况下(如果 SQL Server 可访问),此错误的一个可能原因是您尝试连接 SQL authentication,但您没有提供 UIDPWD 连接选项的值。如果您想使用Windows authentication 连接到服务器,只需删除UIDPWD 连接选项即可。

<?php
# Connection
$serverName = "192.168.0.245\SASTO"; 
$sqlinformation = array(
    "Database"=>"HCM8",
    "UID"=>"",
    "PWD"=>""
);
$conn = sqlsrv_connect($serverName, $sqlinformation);
if ($conn === false)
{
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
    exit;
}

# Query
$sql = ' .. some statement ...';
$stmt = sqlsrv_query($conn, $sql);
if ($stmt === false) {
    echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
    exit;
}

# End
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

【讨论】:

  • @Hasee sqlsrv_connect() 返回什么?
  • 此扩展需要 Microsoft ODBC Driver 11 for SQL Server。访问以下 URL 以下载适用于 x86 的 SQL Server 的 ODBC 驱动程序 11:go.microsoft.com/fwlink/?LinkId=163712) [1] => Array ([0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序 [消息] 这是错误。
  • @Hasee 您的 SQL Server 的 PHP 驱动程序没有安装好。安装缺少的 ODBC 驱动程序并重试。
  • 我加了这个,extension=php_pdo_sqlsrv_56_ts.dll extension=php_sqlsrv_56_ts.dll
  • @Hasee 然后安装 ODBC 驱动程序。 SQL Server 的 PHP 驱动程序 3.2 和 3.1 版需要 Microsoft ODBC 驱动程序 11。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 2015-11-19
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
相关资源
最近更新 更多