Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取特定的SQL错误代码或使用PHP';什么是PDO?_Php_Mysql_Exception_Pdo_Mariadb - Fatal编程技术网

获取特定的SQL错误代码或使用PHP';什么是PDO?

获取特定的SQL错误代码或使用PHP';什么是PDO?,php,mysql,exception,pdo,mariadb,Php,Mysql,Exception,Pdo,Mariadb,我试图根据失败查询的结果确定一个特定的SQL失败条件,并想知道以前是否有人做过类似的事情 在我的示例代码中,我试图在测试表中的一行上获得锁,然后处理响应 $sql = " select tt_idno from testtab ". " where tt_idno = ? for update nowait "; $testtab_Lock = $db->prepare($sql); try { $db->beginTransaction(); $t

我试图根据失败查询的结果确定一个特定的SQL失败条件,并想知道以前是否有人做过类似的事情

在我的示例代码中,我试图在测试表中的一行上获得锁,然后处理响应

$sql = " select tt_idno from testtab ".
       " where tt_idno = ? for update nowait ";
$testtab_Lock = $db->prepare($sql);

try {

    $db->beginTransaction();
    $testtab_Lock->execute([1]);
    $db->commit();

} catch(Exception $log) {

    $db->rollback();

}
问题是,如果记录被锁定,我希望这个查询会失败,在这种情况下,它正在做它应该做的事情。理想情况下,我希望用如下方式处理异常

} catch(Exception $log) {

    $db->rollback();

    if($locked) {
        throw new Exception("Locked but everything is fine");
    } else {
        throw new Exception("Panic");
    }

}
我正在阅读PDO的getCode()的一些文档,并尝试使用它,但它只提供了接近的SQLSTATE,但有点过于通用

} catch(Exception $log) {

    echo "<span>" . $log->getCode() . "</span><br />";

}
}捕获(异常$log){
echo“$log->getCode()”
; }
这给了我SQLSTATE HY000,但我想要的错误代码是1205(我使用的是MariaDB文档:)

有没有其他方法可以通过PHP的PDO获取SQL错误代码或识别锁超时

注意


我正在使用MariaDB(10.3)和PHP(7.2)

您是否尝试读取错误消息?也许它告诉你一些更有意义的事情你试过
errorInfo()
?它包含特定于驱动程序的错误代码和消息:wow errorInfo()正是我要找的,请您作为答案发布,以便我可以接受@icssancheswave您尝试读取错误消息了吗?也许它告诉你一些更有意义的事情你试过
errorInfo()
?它包含特定于驱动程序的错误代码和消息:wow errorInfo()正是我想要的,请您作为答案发布,以便我可以在@Icssanches接受它