Php Mysql更新查询,保持现有值为空

Php Mysql更新查询,保持现有值为空,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,到目前为止,我有以下代码: $update = $connection->prepare("UPDATE recommendations_tbl SET IFNULL(?, PLEASE_DO_NOTHING()), IFNULL(?, PLEASE_DO_NOTHING()),

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

  $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\u DO\u NOTHING(),我不确定语法是否真的有效。 但是,我现在的主要问题是,我不知道是否可以用这种方式使用IFNULL() 如果定义了inputvalue,则设置新值。 如果inputvalue未定义(=NULL),请不要执行任何操作


这可能吗?如果可能的话,我该怎么做呢?

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

有了PHP,您可以根据NULL对象使用不同的准备语句来完成

使用IFNULL,您可以尝试设置与当前列中相同的值,例如,您的列被称为“推荐\类别\名称”和“推荐\制造商\名称”:

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

您需要在应用程序层中构建不同的语句。如果您不想更改某个字段的值,请不要将其包含在SQL中。@Dharman是的,我可以这样做,我也知道如何这样做,但在这种情况下,我想学习如何按照上述方式进行。@baryon123是否值得学习?想想在我5/6年的PHP生涯中,我从来没有见过这个问题,也没有想过这个XD的逻辑用途。老实说,这个问题与准备好的语句(而是一般的SQL)关系不大,但除此之外,它是一个很好的解决方案one@treyBake好吧,也许^^但你永远不知道什么时候你可能会用到这个,在我的情况下,我喜欢让我的用户只保留inputfields为空,然后相应地处理数据,而不用在php端使用更广泛的逻辑来处理数据。也许我再也不需要它了,但我现在只是四处测试,正如我所说的,谁知道它在未来会有什么用途:DI能够实现类似的功能。我正在创建一个API,我只想在值不为null时更新字段。更新用户设置first\u name='Billy',last\u name='Bob',password=IFNULL(NULL,password)