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

时间:2019-09-02 09:28:45

标签: php mysql pdo prepared-statement

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

  $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的知识: Logic to NOT insert a value to column X in a prepared statement

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

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

1 个答案:

答案 0 :(得分:5)

实际上,您可以使用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 = ?
");