PHP / MySQL-如果变量不存在,则更新数组

时间:2018-09-12 15:49:26

标签: php mysql arrays

我有一个从数据库中获得的具有不同ID的数组。

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

现在,我想更新ID为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'将再次保存在行内。看到这里:

enter image description here

问题: 我怎么可能检查行中是否已经有'$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' id,如果为true,则完成UPDATE语句。因此,我添加了'!in_array',但似乎不起作用。有人知道我在做什么错吗?我只想检查'$id'是否已经在我的数据库行中,如果是,则不应再次插入'$id'。 我感谢任何建议。

1 个答案:

答案 0 :(得分:1)

php中的 in_array()函数接受数组作为第二个参数,在(!in_array($ id,$ key)=== true)中,{ {3}}。在此处传递的第二个参数 $ key 不是数组。

您可以将 fa_ev_id 的数据类型另存为json,并在执行字段更新时检索并用json_decode值以了解该 $ id 已经使用 in_array()存在,或者您可以检索值,分解它们以形成一个数组,然后使用 in_array()检查其是否存在。 / p>