【发布时间】:2019-06-29 13:44:23
【问题描述】:
我使用的是典型的 PDO try/catch 子句,它可以正常工作,除了一个方面:WHERE 子句。
这是我的代码:
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
try {
$cancel_query = "UPDATE table SET active = 0 WHERE id = $request_id";
$cancel_stmt = $pdo->prepare($cancel_query);
$cancel_stmt->execute();
$message = "That request was successfully canceled.";
} catch (PDOException $e) {
$message = 'This request was not canceled. Something went wrong. ' . $e->getMessage();
}
$pdo = null;
echo $message;
这将在大多数情况下捕获错误,例如如果我故意输入错误的表名或列名。但是,如果我输入一个不存在的 $request_id,则该消息将指示成功。由于没有更新任何内容,因为 WHERE 子句没有提供要更新的行,所以从业务角度来看,捕获异常是理想的。
如果没有更新,有没有办法抛出错误?
【问题讨论】:
-
我认为您需要检查php.net/manual/en/pdostatement.rowcount.php,如果没有更新的行相应地采取行动