-1

我有一个 php/mysql 站点,它还连接到 mssql 数据库以运行一些存储过程。有一种表格要求输入邮政编码、与邮政编码的距离,并有效地返回该邮政编码距离内的商店。由于某种原因,当此函数运行并且没有结果时,表单会正确返回,并显示一条消息,指出未找到结果。如果由于某种原因有结果,浏览器软重定向回主页。如果我注释掉函数的 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 回答