gpt4 book ai didi

php - 通过更新多行删除不需要的内容

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:41 25 4
gpt4 key购买 nike

params 有两列 - whatstory

用不同的值更新多行:

function save($a, $b, $c, $d, $e){
global $db;
$sql = "
update params set story = case what
when 'art_before' then :a
when 'art_left' then :b
when 'art_middle' then :c
when 'art_right' then :d
when 'art_after' then :e
end";
$st = $db->prepare($sql);
$st->execute([
":a" => $a, ":b" => $b, ":c" => $c, ":d" => $d, ":e" => $e
]);
}

它有效,但 storywhathome (不在上面的列表中)也被更新,即它的内容被删除.

有什么帮助吗?

最佳答案

这就是 CASE 的工作原理。在没有任何匹配条件的情况下,将执行 ELSE(在本例中为隐式),返回一个 null 值。

如果您不想在未满​​足明确条件时更新它,我会使用 explicit ELSE 将其值设置为当前值,如下所示:

update params set story = case what 
when 'art_before' then :a
when 'art_left' then :b
when 'art_middle' then :c
when 'art_right' then :d
when 'art_after' then :e
else story -- added an explicit ELSE
end

或者,您可以只更新匹配一个条件的行,添加一个 WHERE 子句:

update params set story = case what 
when 'art_before' then :a
when 'art_left' then :b
when 'art_middle' then :c
when 'art_right' then :d
when 'art_after' then :e
end
where what in ('art_before', 'art_left', 'art_middle', 'art_right', 'art_after')

关于php - 通过更新多行删除不需要的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53874231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com