所以我的问题是关于 php 在 or 语句采用两个函数的情况下的行为。当第一个函数的计算结果为 true 时,第二个函数是否仍有可能被执行?
我希望下面的代码可以澄清我的意思:
$dbh->startTransaction();
$stmt = $dbh->prepare("DELETE FROM foo WHERE id=:id");
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
if (!$stmt->execute() || !bar($id)) {
$dbh->rollBack();
}
我想确定的是,执行失败时永远不会调用bar()它。$stmt
我知道在某些语言中 or 语句会在评估为 true 时返回 true !$stmt->execute(),并且我可以确定除非bar()评估!$stmt->execute()为 false(意味着$stmt->execute()评估为 true 并且查询成功),否则不会调用该语句。
我在 php 中是否有这种确定性,或者服务器是否有可能同时或以相反的顺序进行评估$stmt->execute(),bar($id)并以这种方式对我的数据库造成严重破坏?
我假设我也能够将我在这里得到的任何答案应用到 and 声明中。如果情况并非如此,请告诉我。
绝地无双