Mysql UPDATE 查询,将现有值保留为 NULL

Mysql UPDATE query, keep the existing value on NULL

到目前为止我有以下代码:

  $update = $connection->prepare("UPDATE recommendations_tbl
                                     SET IFNULL(?, PLEASE_DO_NOTHING()),
                                         IFNULL(?, PLEASE_DO_NOTHING()),
                                     WHERE recommendation_userid = ?
                                     ");


  $update->bindValue(1, $recommendationsDataInput["recommendationCategoryNameInput"]);
  $update->bindValue(2, $recommendationsDataInput["recommendationManufacturerNameInput"]);
  $update->bindValue(3, $recommendationUserID);


  $updateResult = $insertion->execute();

现在,我对准备好的语句还很陌生,我刚刚在这里了解了如何在准备好的语句中使用 IFNULL:

我不确定除了我的小占位符 PLEASE_DO_NOTHING() 之外的语法是否真的有效。 但是,我现在的主要问题是我不知道我是否可以通过这种方式实际使用 IFNULL() : 如果定义了输入值,则设置新值。 如果输入值未定义 (=NULL),则不执行任何操作。

这可能吗?如果可以,我该怎么做?

实际上,您可以使用 PHP 或 IFNULL。

使用 PHP,您可以根据您的 NULL 对象使用不同的准备语句。

使用 IFNULL,您可以尝试设置与当前列相同的值,例如,您的列名为 recommendation_category_name 和 recommendation_manufacturer_name:

$connection->prepare("UPDATE recommendations_tbl SET
          recommendation_category_name = IFNULL(?, recommendation_category_name),
          recommendation_manufacturer_name = IFNULL(?, recommendation_manufacturer_name),
          WHERE recommendation_userid = ?
");