您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

存储过程可以在MSQL Studio中正常运行,但现在可以在PHP中运行

存储过程可以在MSQL Studio中正常运行,但现在可以在PHP中运行

您需要将SET NOCOUNT ON第一行放在存储过程中,以防止返回T-sql语句影响的行数作为结果集的一部分。这就是产生NULL结果的原因。

如果您无法更改存储过程,请使用sqlsrv_next_result()激活下一个结果,然后获取数据。

注意,请始终使用准备好的语句和参数化查询来防止sql注入。使用适用于sql Server的PHP驱动程序,该函数sqlsrv_query()既可以执行语句准备又可以执行语句,并且可以用来执行参数化查询

<?PHP

    if( $conn === false ) {
        echo "Connection Failed.";
        die( print_r( sqlsrv_errors(), true));
    }

    $query = "EXEC dbo.sp_Pok_Details @oe = ?, @code = ?";
    $params = array(17, '5907769000409');
    $getProducts = sqlsrv_query($conn, $query, $params);  
    if ($getProducts === false) {
        die( print_r( sqlsrv_errors(), true));  
    }

    // Just for test - make additional call(s) to get the count of the active result sets
    do {
       while($row = sqlsrv_fetch_array($getProducts, sqlSRV_FETCH_ASSOC)) {  
          echo 'Current rowset'.'<br>';
       }  
    } while (sqlsrv_next_result($getProducts));
    // Or if you have only one result set
    //while ($row = sqlsrv_fetch_array($getProducts, sqlSRV_FETCH_ASSOC)) {  
    //  $returnArray[] = $row;
    //}

    echo json_encode($returnArray);
?>
php 2022/1/1 18:44:54 有537人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶