Julian Espinosa
Julian Espinosa

Reputation: 722

Display results from Stored Procedure using SQL Server and PHP

I am trying to display the output of the stored procedure using PHP and SQL server. The stored procedure is a SELECT statement. As of now, I end up in the else condition that displays the success message, but I am not able to show the results from the query. Here is the function:

  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; }

If I run the stored procedure in SSMS for instance with a 200 as the account number, I get data back.

I am using PHP 7.4

Any help is appreciated. Please let me know if I need to include more information.

Upvotes: 0

Views: 950

Answers (1)

Zhorov
Zhorov

Reputation: 29943

If I understand the question correctly, you need to fetch the data using sqlsrv_ferch_array() or 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; 
}
?>

Upvotes: 2

Related Questions