PHP SQL Server 2008 未返回预期结果

Posted

技术标签:

【中文标题】PHP SQL Server 2008 未返回预期结果【英文标题】:PHP SQL server 2008 not returning expected results 【发布时间】:2012-04-02 15:43:44 【问题描述】:

您好,我目前正在开发一个 php 脚本,它只会返回一个字段的值。下面的代码是我一直在使用的

$code = $_POST['code'];

$serverName = "EDIT";
$connectionInfo = array("UID" => "EDIT", "PWD" => "EDIT", "Database"=>"EDIT");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

$tsql2 = "SELECT paitentno FROM paraappreg WHERE appno = $code";

$result2 = sqlsrv_query( $conn, $tsql2, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));

  print sqlsrv_fetch($result2);

此代码正在生成一个输出,但它始终为“1”。我猜测这与我如何使用 sqlsrv_fetch 返回值有关,但是如果这是问题,我不确定应该使用什么。

感谢您提供的任何帮助:)

【问题讨论】:

【参考方案1】:

sqlsrv_fetch "使结果集中的下一行可供读取。"您得到的响应是“真”,表示操作已成功。您想要做的是使用此命令的变体之一来获取数据(代码未经测试但应该可以工作):

    print ($result2); // response: 1 ("true")

    print_r(sqlsrv_fetch_array($result2)); // response: Array("paitentno"=>'1234');
    print_r(sqlsrv_fetch_object($result2)); // response: StdObj->paitentno->1234;
    // this gets the item by index:
    print_r(sqlsrv_get_field($result2, 0)); // response: 1234;

阅读更多关于sqlsrv_fetch at php.net.

【讨论】:

这个答案基本上是正确的,有一个更正:sqlsrv_get_field 函数旨在与 sqlsrv_fetch 结合使用。即调用 sqlsrv_fetch 使一行准备好读取,然后调用 sqlsrv_get_field 以获取行中的字段(一次一个)。 sqlsrv_fetch_array 和 sqlsrv_fech_object 将获取整行,不能在 sqlsrv_fetch 之后调用。

以上是关于PHP SQL Server 2008 未返回预期结果的主要内容,如果未能解决你的问题,请参考以下文章

win12安装 sqlserver2008 r2未授权的操作

SQL Server 2008 Management Studio 的缺失索引功能

用户“sa”登录失败。用户未与受信任的 SQL Server 连接关联。 (Microsoft SQL Server,错误:18452)在 sql 2008 中

行计数估计未使用 SQL Server 2008 多列统计信息

SQL Server CASE 表达式未按预期计算

SQL Server STRING_AGG 函数排序未按预期工作