我们必须执行MSSQL存储过程才能插入一组行并返回结果。在Microsoft SQL Server Management Studio中执行时,该过程完全按预期工作。但是在PHP中使用sqlsrv_execute
或sqlsrv_query
执行时它不起作用。它只插入一行并且不返回任何行。
可以找到存储过程Here
PHP代码是
//Here my SP required one argument. so i passed one argument. this @param and stored procedure argument name should be same(case sensitive)
$sql = " { call ResmaxCompareWithProduction ( ?,? ) } ";
$param1 = 'All';
$param2 = 'desk';
$params = array(array(&$param1, SQLSRV_PARAM_IN),array(&$param2, SQLSRV_PARAM_IN));
$stmt = sqlsrv_prepare($conn,$sql,$params);
if ($stmt===false) {
// handle error
print_r(sqlsrv_errors(),true);
}else{
if (sqlsrv_execute($stmt)===false) {
// handle error. This is where the error happens
print_r(sqlsrv_errors(),true);
}
else
{
$resultsetarr = array();
while($row = sqlsrv_fetch_array($stmt)){
$resultArray[] = $row;
}
print_r($resultArray);
// success! It never gets here, though.
}
}
我尝试var_dump过程返回的结果并输出resource(4) of type (SQL Server Statement)
sqlsrv_errors()返回NULL
sqlsrv_fetch_array
返回boolean(false)
我甚至尝试使用sqlsrv_query
代替sqlsrv_prepare
和sqlsrv_execute
,但结果相同。
你们可以帮助我找出问题所在并使程序按预期运行。