-1

いくつかのストアドプロシージャを実行するためにmssqlデータベースにも接続するphp/mysqlサイトがあります。郵便番号、郵便番号からの距離を要求し、郵便番号からその距離内の店舗を効果的に返すフォームがあります。何らかの理由で、この関数が実行され、結果がない場合、フォームは結果が見つからないというメッセージとともに正しく返されます。何らかの理由で結果が出た場合、ブラウザはソフトリダイレクトしてホームページに戻ります。関数のmssql_execute部分をコメントアウトすると、リダイレクトは発生しません。明らかに結果は得られません。mssql_executeを挿入して同じリクエストを実行すると、ページがリダイレクトされます。ストアドプロシージャを実行する関数は次のとおりです。

function getCompaniesByAddress(){
    global $msdb;

    //initiate function
$proc = mssql_init('usp_Search_Scope_And_Range', $msdb); 

//Load Parameters 
mssql_bind($proc, '@SuperscopeID', $_POST['activity'], SQLINT4, false, false, 10);
mssql_bind($proc, '@ScopeID', $_POST['scheme'], SQLINT4, false, false, 10);
mssql_bind($proc, '@PCode', $_POST['postcode'], SQLVARCHAR, false, false, 10);
mssql_bind($proc, '@Distance', $_POST['distance'], SQLINT4, false, false, 10);

try
  {
  $result = mssql_execute($proc);
  //If the exception is thrown, this text will not be shown
  }

//catch exception
catch(Exception $e)
  {
  echo 'Message: ' .$e->getMessage();
  }

//Execute Procedure 
//$result = mssql_execute($proc);

//Free Memory 
mssql_free_statement($proc); 

while ($row = mssql_fetch_assoc($result))
    $results[] = $row;

$res = array_chunk(sortDataSet($results,'Mileage_FL'),20);

return $res[0];
}
4

1 に答える 1

2

tryここで/雇用できませんcatchか?次に、少なくとも返されるエラーメッセージを出力できます(リダイレクトに投げ込まれているだけのグローバルエラー処理は明らかに表示されていません)。私はPHPの人ではないので、この構文が100%正確かどうかはわかりませんが、次のような方法を試すことができます。

try
{
  $result = mssql_execute($proc);
  while ($row ...
  ...
  return $res[0];
}
catch (Exception $e) 
{
  echo ($e->getMessage());
}

(ここの例に基づく:ファイルがアップロードされないPHPでcatchステートメントを試してください)

于 2012-04-25T17:23:04.947 に答える