如果变量不存在,则更新数组

carvr3hs  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(366)

我有一个数组,它有不同的id,我从我的数据库中得到。

$fotos_temp_list=explode(",",$fotos_temp["fa_id"][0]);
Result: fa_id => 15,16,17,18

现在我想用ids 15,16,17,18更新另一个表中的所有行,并插入一个特定的 '$id' 到一个名为 'fa_ev_id' . 在这个例子中,我设置了:

$id=1;

现在我的foreach循环如下所示:

foreach ($fotos_temp_list as $key) {
    UPDATE images SET fa_ev_id = Concat(fa_ev_id , ',' ,'".$id."') where fa_id='".$key."' ";
}

这部分也起作用了。带有我的id的每一行(在我的示例中:15、16、17、18)都会得到更新。
问题:当我再次运行foreach循环时 '$id' 将再次保存在行内。请看这里:

问:怎么可能,我可以检查一下 '$id' 已经在行中,如果是,它将被跳过?以下是我试图做的:

foreach ($fotos_temp_list as $key) {
    if (!in_array($id,$key)===true) {
        UPDATE fotoalbum SET fa_ev_id = Concat(fa_ev_id , ',' ,'".$id."') where fa_id='".$key."'
    }
}

我认为 in_array 函数检查 '$id' 身份证已经在里面了 '$key' 如果是真的,update语句就完成了。因此我补充道 '!in_array' 但事实并非如此´它似乎起作用了。有人知道我做错了什么吗?我只是想看看 '$id' 已在我的数据库行中,如果是,则不应插入 '$id' 再一次。我很感激你的建议。

bpsygsoo

bpsygsoo1#

php中的in\u array()函数接受数组作为其第二个参数,in(!在数组($id,$key)==true)中,https://www.w3schools.com/php/func_array_in_array.asp. 这里传递的第二个参数$key不是数组。
您可以将fa_ev_id的数据类型保存为json,并在执行更新字段时检索并解码该值,以了解该$id是否已存在(使用in_array()),或者可以检索这些值,将它们展开以形成一个数组,然后使用in_array()检查它是否存在。

相关问题