仅更新具有设置值的列


Update only columns with a set value

我一直在寻找解决方案,但没有找到简单的解决方案。例如,这个链接谈到了这一点,但对我没有太大帮助:MySQL更新列仅当值不为空时

以下是我想要实现的目标:

$stmt = $dbh->prepare("UPDATE table_name SET field1 = :value1, field2 = :value2 WHERE id = :id");
$stmt->bindValue(':value1', $value1, PDO::PARAM_STR);
if(!empty($value2)) $stmt->bindValue(':value2', $value2, PDO::PARAM_STR); // if the field was present in the form, otherwise IGNORE it
$stmt->bindValue(':key', $key, PDO::PARAM_INT);
$stmt->execute();

我见过一些使用COALESCE的解决方案,但它只会使值为空。

我认为您应该检查应该更新哪些数据,以及在为这些字段生成更新SQL语句时。

  1. 选择数据WHERE id=:id
  2. 检查是否需要更新某些字段
  3. 仅为此类字段生成和执行更新