我有一个数组,它有不同的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'
再一次。我很感激你的建议。
1条答案
按热度按时间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()检查它是否存在。