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

时间:2012-08-27 15:10:08

标签: php database codeigniter

我再次发现自己受到stackoverflow社区的支配!

我已经过去为我的PHP项目使用CodeIgniter了,到目前为止,这是一件轻而易举的事,但是我一直试图用一些帖子数据更新数据库字段。

我的数组通常是:array(name => value,name => value,name => value); 再次从提交的$ _POST数据中填充。

与数组类似,我有一个包含2个字段的数据库表:设置,其中设置下的名称对应于数组键和到数组键的值。

(我说的没错吗?)

尽管如此,我已经尝试了一段时间才能让它按原样运行,但是,我真的只是在黑暗中挥手。

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

修改

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

    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');
        }

到我的控制器,但它根本无法正常工作。我有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这里有很多问题。您是否已在数据库中拥有值并且想要更新它们?或者你想每次都输入新数据?答案取决于那个。

您想要的是活动记录类的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,具体取决于是否有结果。如果要每次插入,可以在执行插入之前删除表中的行。但是,如果没有交易我就不会这样做。

答案 1 :(得分:0)

所以你想将数组数据存储在数据库中?你可以这样做

模型

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";
}