【发布时间】:2020-01-05 08:20:04
【问题描述】:
到目前为止,我有以下代码:
$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),则不执行任何操作。
这可能吗?如果可以,我该怎么做?
【问题讨论】:
-
你需要在你的应用层构建不同的语句。如果您不想更改某些字段的值,请不要将其包含在 SQL 中。
-
@Dharman 是的,我可以做到这一点,而且我也知道如何做到这一点,但在这种情况下,我想学习如何按照我上面描述的方式做到这一点。
-
@baryon123 值得学习吗?想想在我 5/6 年的 PHP 中,我从未见过这个或想过这个 xD 的逻辑用途
-
老实说,这个问题和prepared statements没有太大关系(而是和一般的SQL有关),但除此之外很好
-
@treyBake 也许很好 ^^ 但你永远不知道什么时候可以使用它,在我的情况下,我喜欢让我的用户将输入字段留空,然后相应地处理数据而不进行处理它在 php 方面具有更广泛的逻辑。也许我再也不需要它了,但我目前只是在测试,正如我所说,谁知道它将来可能有什么用途:D
标签: php mysql pdo prepared-statement