也许标题不是那么清楚,但假设这种情况: 我有一个表单来更新表的特定行。当我提交表单时,执行UPDATE查询。
我计算受影响行的数量,以确定查询是否正确。
$row->execute();
$count = $row->rowCount();
if($count==0){
http_response_code(500);
}else{
http_response_code(200);
}
如果用户通过更改任何数据提交表单,则此方法很有效。如果表单保持不变,查询将影响0结果,我的代码将返回500。 但关键是查询已正确执行。
所以我的问题是:有没有办法让mysql告诉我0行受影响因为数据没有改变而不是任何其他情况(例如字段中的错误值等等) ?)。所以我的if会变成这样的东西:
if($count==0||$no_field_changed==false){
答案 0 :(得分:1)
Gordon已经在评论中给了你答案,
您应该检查错误条件以查看查询是否成功
但是为了明确我会为你扩展它。
$status = $row->execute();
if ( ! $status ) {
// the query errored
$arr = $row->errorInfo();
error_log(print_r($arr,1), 3, 'db_error.log'));
http_response_code(500);
exit;
}
// So if we get here the query ran successfully
if($row->rowCount() == 0){
// Nothing was changed by our query this time but it ran successfully
http_response_code(200);
}else{
// Something was changed by our query
http_response_code(200);
}