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 = ?
");
到目前为止我有以下代码:
$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 = ?
");