我一直在寻找解决方案,但没有找到简单的解决方案。例如,此链接讨论了这一点,但对我没有多大帮助:MySQL update column only if value not empty where
这是我想要实现的目标:
$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 语句。
- 选择数据 WHERE id = :id
- 检查是否需要更新某些字段。
- 仅为此类字段生成并执行更新。
关于php - 仅更新具有设定值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001384/