我使用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, " "));
它感觉不是特别有用,而且看起来很笨重,但是我找不到任何更清洁的方法,所以我希望有人可以帮助我!