【问题标题】:Display results from Stored Procedure using SQL Server and PHP使用 SQL Server 和 PHP 显示存储过程的结果
【发布时间】:2021-01-26 23:32:41
【问题描述】:

我正在尝试使用 PHP 和 SQL 服务器显示存储过程的输出。存储过程是一个SELECT 语句。截至目前,我最终处于显示成功消息的else 条件,但我无法显示查询的结果。这是函数:

  function account_search_sp($account_number,$occupant_code,$name,$address,$bill_code,$utility_code){
   global $db;

   sqlsrv_configure("WarningsReturnAsErrors", 0);

   $sql = "EXEC sp_cigar_account_search @AcctNo= ?, @OccupantCode= ?, @Name= ?, @Address= ?, @BillCode= ?, @UtilityType= ?";

   $procedure_params = array(
   array(&$account_number, SQLSRV_PARAM_IN),
   array(&$occupant_code, SQLSRV_PARAM_IN),
   array(&$name, SQLSRV_PARAM_IN),
   array(&$address, SQLSRV_PARAM_IN),
   array(&$bill_code, SQLSRV_PARAM_IN),
   array(&$utility_code, SQLSRV_PARAM_IN)
   );

   $stmt = sqlsrv_prepare($db, $sql, $procedure_params);

   $result = sqlsrv_execute($stmt);

   if( !$result ) {
     //Show errors
     echo "Die error <br>";
     die( print_r( sqlsrv_errors(), true));

   }else{
     echo "<br><h3>Success</h3><br>";
     sqlsrv_next_result($stmt);
   }

return $stmt; }

如果我在 SSMS 中运行存储过程,例如使用 200 作为帐号,我会返回数据。

我正在使用 PHP 7.4

感谢任何帮助。如果我需要提供更多信息,请告诉我。

【问题讨论】:

  • 你到底想输出什么?每行的值?
  • @Zhorov 是的。值。

标签: php sql sql-server sqlsrv


【解决方案1】:

如果我理解正确,您需要使用sqlsrv_ferch_array()sqlsrv_fetch_object() 获取数据:

<?
function account_search_sp($account_number, $occupant_code, $name, $address, $bill_code, $utility_code) {
   global $db;

   sqlsrv_configure("WarningsReturnAsErrors", 0);

   $sql = "EXEC sp_cigar_account_search @AcctNo= ?, @OccupantCode= ?, @Name= ?, @Address= ?, @BillCode= ?, @UtilityType= ?";

   $procedure_params = array(
      array(&$account_number, SQLSRV_PARAM_IN),
      array(&$occupant_code, SQLSRV_PARAM_IN),
      array(&$name, SQLSRV_PARAM_IN),
      array(&$address, SQLSRV_PARAM_IN),
      array(&$bill_code, SQLSRV_PARAM_IN),
      array(&$utility_code, SQLSRV_PARAM_IN)
   );

   $stmt = sqlsrv_prepare($db, $sql, $procedure_params);
   if ($stmt === false) {
      echo "Die error <br>";
      die( print_r( sqlsrv_errors(), true));
   }
   
   if (sqlsrv_execute($stmt) === false) {
      echo "Die error <br>";
      die( print_r( sqlsrv_errors(), true));
   }
   
   echo "<br><h3>Success</h3><br>";
   $data = array();
   do {
      while ($row = sqlsrv_fetch_array($stmt)) {
         $data[] = $row;
      }
   } while (sqlsrv_next_result($stmt)); 

   return $data; 
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多