繁体   English   中英

在MS SQL Server中使用sqlsrv_execute进行sqlsrv_fetch

[英]sqlsrv_fetch with sqlsrv_execute in MS SQL server

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

这是我的代码段->

$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_fetch()可以正常工作。 可能的原因是sqlsrv_query()返回混合输出而不是布尔值。

任何人都可以帮助将sqlsrv_fetch与execute配合使用。

sqlsrv_execute返回一个布尔值,指示成功或失败。

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

if (sqlsrv_fetch($abc)){
    $id = sqlsrv_get_field($abc, 0);
    echo $id;
}

您对原因的见解是正确的。 检查有关sqlsrv_execute和每个功能的文档。

sqlsrv_execute返回truefalse布尔值 )。 而这并不是fetch期望的输入。

一旦您不了解在每个函数上都需要匹配期望参数类型的需求,您将能够与任何类型的代码轻松相处。

在开发环境中时,请尝试var_dump($abcd); 分配后即可查看其值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM