[英]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_fetch
和sqlsrv_get_field
的参数sqlsrv_get_field
:
if (sqlsrv_fetch($abc)){
$id = sqlsrv_get_field($abc, 0);
echo $id;
}
您对原因的见解是正确的。 检查有关sqlsrv_execute和每个功能的文档。
sqlsrv_execute返回true或false ( 布尔值 )。 而这并不是fetch期望的输入。
一旦您不了解在每个函数上都需要匹配期望参数类型的需求,您将能够与任何类型的代码轻松相处。
在开发环境中时,请尝试
var_dump($abcd);
分配后即可查看其值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.