用PHP有效地接收MSSQL SP自定义错误

时间:2017-06-28 11:34:01

标签: php sql-server pdo

我使用PHP和MSSQL SP来插入和更新数据。为确保数据不会错误更新,我在SP中使用IF语句,如果触发错误,我想使用RAISERROR来触发自定义错误消息。

回到PHP我希望将此RAISERROR消息用作if语句的一部分。为了有效地做到这一点,我的RAISERROR发送数字代码像这样:RAISERROR('2', 16, 2),但回到PHP,我无法找到获得' 2'的方法,因为这似乎这是我唯一可以在这些信息中独一无二的东西。

到目前为止,我发现了两个PDO函数来获取这些错误:

print_r($stmt->errorInfo());
print_r($stmt->errorCode());

其中,只有errorInfo()给了我一些有用的东西,这个:

Array
(
    [0] => HY000
    [1] => 50000
    [2] => 2 [50000] (severity 16) [(null)]
    [3] => -1
    [4] => 16
)

哪个不是特别有用,因为我需要的实际价值只能通过以下方式获得:

$errmsg = $stmt->errorInfo()[2];
$error = substr($errmsg, 0, strpos($errmsg, " "));

它感觉不是特别有用,而且看起来很笨重,但是我找不到任何更清洁的方法,所以我希望有人可以帮助我!

0 个答案:

没有答案