使用CodeIgniter中的数组更新数据库字段


Update database field with array in CodeIgniter

我再次发现自己任由stackoverflow社区摆布!

我已经在我的PHP项目中使用了CodeIgniter,到目前为止这是一件轻而易举的事,尽管我在尝试用一些后期数据更新数据库字段时遇到了困难。

我的数组是常见的:数组(name=>value,name=>value,name==>value);其再次由提交的$_POST数据填充。

与数组类似,我有一个包含2个字段的数据库表:settingvalue,其中settings下的名称与数组键相对应,value与数组键的值相对应。

(我解释对了吗?)

尽管如此,我已经试着让它正常工作了一段时间,但是,我真的只是在黑暗中挥手。

我希望你们中的一些聪明人能帮助我解决这个烦人的问题!

编辑:

感谢所有回复的人!我设法用以下代码产生了我想要的结果:

    foreach ($form_data as $key => $val)
    {
        $this->db->where ('setting', $key);
        $this->db->set ('value', $val);
        $this->db->update ('recruitment');
    }

现在,我尝试添加以下内容:

    if ($this->db->affected_rows() >= '1') { return true; }
    return false;

对于我的模型和

        if ($this->RecruitmentSettings->Update($form_data) == TRUE)
        {
            redirect('recruitment/success');
        }

我的控制器,但它根本没有按预期工作。你知道我做错了什么吗?

这里有很多问题。数据库中是否已有值,是否要更新这些值?还是每次都要输入新数据?答案取决于此。

您想要的是活动记录类的insert_batch()update_batch()方法(如果这是用于数据库的方法)。

foreach($post_array as $key => $value)
{
    $settings[] = array(
        'setting' => $key,
        'value' => $value
    );
}
$this->db->insert_batch('your_db_table', $settings);

OR,用于更新:

$this->db->update_batch('your_db_table', $settings, 'setting');

您可以执行查询以检查设置,并根据是否有结果执行insert_batchupdate_batch。如果每次都要插入,可以在插入之前删除表中的行。然而,如果没有交易,我不会这么做。

那么您想将数组数据存储在数据库中吗?你可以做这个

型号

foreach ($data as $key => $item)
{
      $this->db->set ('setting', $key);
      $this->db->set ('value', $item);
      $this->db->insert ('table_name');
}
return ($this->db->affected_rows() > 0);

控制器

if ($this->RecruitmentSettings->Update($form_data))
{
 redirect('recruitment/success');
}
else
{
     echo "error";
}