Php 如何知道where子句中的条件变为真或假?
我正在根据更新查询中WHERE子句中给出的各种条件更新数据库表。Php 如何知道where子句中的条件变为真或假?,php,mysql,sql,mariadb,Php,Mysql,Sql,Mariadb,我正在根据更新查询中WHERE子句中给出的各种条件更新数据库表。 如果条件变为真实,则会发生更新,我想做一些其他事情。 如果条件为假,则不会发生变化 $stmt = $mysqli->prepare("UPDATE bank_report SET STATUS='matched' WHERE id='1' AND part='3'"); if(false === $stmt) { die('prepare() failed: ' . htmlspecialchars($mysqli
如果条件变为真实,则会发生更新,我想做一些其他事情。
如果条件为假,则不会发生变化
$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子句中的条件变为true或false,以确定是否确实发生了更改。检查受影响的行:
mysqli\u受影响的行()mysqli::$infected\u rows--mysqli\u infected\u rows-获取上一个MySQL操作中受影响的行数()
或
如果计数大于0,请在更新前进行选择并应用逻辑,您可以使用该逻辑检查语句受影响的行数。如果大于0
,则where
子句计算为true:
if ($stmt->affected_rows > 0) {
// some other logic
}
@奈杰尔·伦——这个已经回答过的问题的主题令人困惑。“…正确执行”是指没有错误地执行。TBH此问题的标题并不完全反映问题-where子句变为true或false?但是,如果你看一看复制品,他们所问的问题是完全相同的——用相同的解决方案——因此复制品。