在数据库中存储为数组的值在更新时将新值添加到同一数组中时被删除

value stored as array in the database getting deleted while adding new values into the same array while updating

我的问题是当我去更新已经存储在数据库中的值被删除并且只有新添加的值被删除 这是我的代码

<script>
    $(document).ready(function() {
        if(destId=='bar3' || sourceId=='bar3') {
            var itemvalue2 =Array();
            $('ul#bar3 li').each(function() {
                itemvalue2.push($(this).attr("value"));
            });
            document.getElementById("bar3-output").value=itemvalue2;
        }
    });
</script>

这是我的观点

<ul id="bar3"  class="block__list block__list_tags">
    <input type="hidden" id="bar3-output" name="all_active_menu3" class="form-control" 
    value="<?php if(!empty($team_info->members)) {
        $tagsArray = explode(',', $team_info->members);
        $tagsLinksArray = array();
        foreach($tagsArray as $tag) {
            $tagName = trim($tag);
            $tagsLinksArray[]=$tagName;
        }
        $tagsLinks = implode(',', $tagsLinksArray);
        echo $tagsLinks;}?>
    ">
</ul>

这是我的控件

public function save_team($team_id = NULL)
{
    $profile_data=$this->Teams_model->array_from_post(array('team_name'));
    $this->Teams_model->_table_name = 'tbl_teams'; // table name
    $this->Teams_model->_primary_key = 'team_id'; // $id
    if (!empty($team_id)) {
        $profile_data['members']=$this->input->post('all_active_menu3');
        $this->Teams_model->save($profile_data, $team_id);
    } else {
        $profile_data['members']=$this->input->post('all_active_menu3');
        $this->Teams_model->save($profile_data);
    }

    if (!empty($team_id)) {
        $message = ('Team Info Updated');
    } else {
        $message = ('Team Info Saved');
    }
    $type = 'success';
    set_message($type, $message);
    redirect('admin/team/team_list'); //redirect page
}

数据库中的值不稳定我已经使用了很多想法但没有达到destination.hope你的帮助请帮助我

我不确定你的代码是如何工作的,但这是我的猜测和出了什么问题:在这两种情况下你只是替换了旧值。

这似乎是相关的代码片段。

$profile_data=$this->Teams_model->array_from_post(array('team_name'));
//...
if (!empty($team_id)) {
    $profile_data['members']=$this->input->post('all_active_menu3');
    $this->Teams_model->save($profile_data, $team_id);
} else {
    $profile_data['members']=$this->input->post('all_active_menu3');
    $this->Teams_model->save($profile_data);
}

$profile_data的第一个赋值是从现有团队中读取当前团队数据。您的命名有点混乱,因为您实际上并没有阅读任何 POST 数据。 if 块中满足条件 !empty($team_id) 的分配应该更新团队成员,而 false 块应该创建一个新团队。您确认 $team_id 设置成功了吗?

我不确定团队信息的结构,但与其在 true 块中使用 = 进行直接分配,不如使用 += 或手动组合新旧数据然后做作业。

使用 array_merge 之类的方法或循环创建一个间歇性对象来保存组合数据在这里应该可行。