如何知道where子句中的条件变为真还是假?

时间:2018-12-20 07:37:57

标签: php mysql sql mariadb

我正在根据UPDATE查询中WHERE子句中给出的各种条件更新数据库表。
如果条件满足,则会进行更新,我想做一些其他工作。
如果条件错误,则不会发生任何变化。

$stmt = $mysqli->prepare("UPDATE bank_report SET STATUS='matched' WHERE id='1' AND part='3'");
if(false === $stmt) {
    die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
$rc = $stmt->execute();
if(false === $rc) {
    die('execute() failed: ' . htmlspecialchars($stmt->error));
}
echo $rc;

// I want this
// if(WHERE clause gets true) { PERFORM SOMETHING ELSE }

但是在两种情况下(对或错),我总是从echo $rc;获得相同的结果1

是否有任何机制可以区分WHERE子句中的条件为真还是假,以确定是否确实发生了更改。

3 个答案:

答案 0 :(得分:1)

您可以使用affected_rows检查该语句影响了多少行。如果大于0,则where子句的评估结果为true:

if ($stmt->affected_rows > 0) {
    // some other logic
}

答案 1 :(得分:0)

检查受影响的行:

mysqli_affected_rows()

答案 2 :(得分:0)

mysqli :: $ affected_rows-mysqli_affected_rows —获取前一个MySQL操作(http://php.net/manual/en/mysqli.affected-rows.php)中受影响的行数 要么 如果更新次数大于0,请在更新前进行选择并应用逻辑