首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在sqlsrv_fetch中使用sqlsrv_fetch和sqlsrv_execute

在sqlsrv_fetch中使用sqlsrv_fetch和sqlsrv_execute
EN

Stack Overflow用户
提问于 2015-07-10 12:09:11
回答 2查看 817关注 0票数 1

我正在尝试从存储在远程MSSQL服务器上的过程中提取数据。PHP文档sqlsrv_fetch($stmt)中说,$stmt指的是sqlsrv_query()sqlsrv_execute()返回的资源。

下面是我的代码片段->

代码语言:javascript
复制
$sql = "exec USP_ABC_ABC_REPORT 'Apple','06/01/2014','10/29/2014','H','A'";

        $segment ='apple';
        $start_date='06/01/2014';
        $end_date ='10/29/2014';
        $something2 ='H';
        $something3 ='A';       

        $abc = sqlsrv_prepare($conn, $sql, array( &$segment, &$start_date, &$end_date, &$something2, &$something3));


        if( $abcd = sqlsrv_execute( $abc)){
                 if(sqlsrv_fetch($abcd)){
                    $id = sqlsrv_get_field( $abcd, 0);
                    echo $id;
            }   else{
                    echo "fetch failed";
                }
        }

这个片段显示了一个错误:

sqlsrv_fetch()期望参数1是资源,布尔给定。

如果我使用的是sqlsrv_query()而不是sqlsrv_execute/prepare,那么sqlsrv_query()可以正常工作。可能的原因是sqlsrv_query()返回混合输出而不是布尔值。

有人能帮忙使用sqlsrv_fetch和execute。

EN

回答 2

Stack Overflow用户

发布于 2015-07-10 12:37:39

sqlsrv_execute返回指示成功或失败的布尔值。

如果对sqlsrv_prepare的调用成功,它将返回一个语句资源。因此,您只需将$abc作为sqlsrv_fetchsqlsrv_get_field的参数传递即可。

代码语言:javascript
复制
if (sqlsrv_fetch($abc)){
    $id = sqlsrv_get_field($abc, 0);
    echo $id;
}
票数 0
EN

Stack Overflow用户

发布于 2015-07-10 12:46:09

你对原因的见解是正确的。检查执行和每个函数的文档。

sqlsrv_execute返回truefalse (布尔值)。这不是fetch作为输入所期望的。

一旦您不需要在每个函数上匹配预期参数的类型,您就可以更容易地处理任何类型的代码。

在开发环境中,在赋值之后尝试使用var_dump($abcd);来查看它的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31340422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档