PHP sqlsrv插件似乎不支持SQL try / catch语句。

时间:2016-07-01 18:28:34

标签: php sql-server

背景

我在基于php的Web应用程序中有一个简单的数据库驱动的Semaphore,它使用windows的sqlsrv扩展和linux / max的mssql。

问题

我正在运行的查询如下:

      BEGIN TRY
        INSERT INTO Semaphores VALUES (:name, :process_id)
      END TRY
      BEGIN CATCH
        SELECT 'false' AS Result
      END CATCH

此查询在SQL Server管理工作室中完美运行。它也适用于mssql扩展。但是在sqlsrv中,catch查询从不执行(或者至少结果不可用)。

代码如下:

  $results = sqlsrv_query($this->connection, $built_query);
  /* Error handling here left out for brevity */
  $row = sqlsrv_fetch_array($results, SQLSRV_FETCH_ASSOC);

  if ($row === FALSE)
  {
    // The insert worked so no rows exist causing the fetch array to fail.
    return true;
  }
  else
  {
    // The select executed. Don't actually care about the contents.
    // This means the insert failed.
    return false;
  }

$row始终为FALSE(ERROR STATE)。无论查询是什么样的。我可以自己强制查询的任一分支,它可以按预期工作。

问题。

为什么sqlsrv_fetch_array没有获得捕获结果?

0 个答案:

没有答案