php - 仅更新具有设定值的列

标签 php mysql pdo

我一直在寻找解决方案,但没有找到简单的解决方案。例如,此链接讨论了这一点,但对我没有多大帮助: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 语句。

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

关于php - 仅更新具有设定值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37001384/

相关文章:

MySQL根据列的最高值返回不同的行

php - 未捕获的异常 'PDOException',消息为 'SQLSTATE[HY093]: Invalid parameter number'

php - 使用 Yii 框架按年份进行比较

php - Drupal Zen 子主题,添加到标题区域下方的标题内容

Php 网页无法找到连接变量

php - 使用 mysqli 或 PDO 时无法通过 PHP 脚本连接到 MySQL 但 mysql 可以工作

php - PDO 事务在有 10 个插入(到 mysql)语句时超时

php - 使用 PDO 插入数据——错误 UTF8

php - 将两个或多个简单数组转换为多维数组?

php - 来自 Mysql 的 ISNULL 未通过 PHP 在网页上显示结果