到目前为止,我有以下代码:
$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),则不执行任何操作。
这有可能吗,如果可以,我该怎么办?
答案 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 = ?
");