PHP MySQL:在更新数据库条目时Try/Catch不起作用[重复]

siv3szwd  于 2023-03-21  发布在  PHP
关注(0)|答案(1)|浏览(135)

此问题在此处已有答案

Checking for an empty result (PHP, PDO, and MySQL) [duplicate](8个答案)
2天前关闭。
这篇文章是编辑和提交审查2天前。
我有下面的代码和操纵数据库(测试),所以没有更新是可能的,因为没有更多的fk-key来识别数据库记录.但代码给予我一个OK.谁能解释一下为什么,以及如何我可以返回一个错误?我检查了PHPMyAdmin的数据库表,真的什么都没有.

try {
    $stmt = $this->pdo->prepare("
    UPDATE
        tbl_it_bookkeeping
    SET
        infoBilldate = :infoBilldate,
        infoInvoice = :infoInvoice,
        infoCostcentre = :infoCostcentre,
        infoInvestment = :infoInvestment
    WHERE
        fk_computer = :fk_computer");
    $stmt->execute([
        'fk_computer' => $computerID,
        'infoBilldate' => $infoBilldate,
        'infoInvoice' => $infoInvoice,
        'infoCostcentre' => $infoCostcentre,
        'infoInvestment' => $infoInvestment
    ]);
}
catch (Exception $ex) {
    echo $ex; exit;
}

编辑:因为这是关闭:这个问题与try/catch有关。其他问题则不是。

mxg2im7a

mxg2im7a1#

异常仅在错误发生时抛出,UPDATE影响0行并不一定总是意味着有错误。相反,您应该使用PDOStatement::rowCount来获取受执行语句影响的行数,如下所示:

if ($stmt->rowCount() == 0) {
    // no rows affected
}

您可以在the PHP documentation here中阅读更多关于此方法的信息。

相关问题