3

我再次发现自己在 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');
        }

到我的控制器,但它根本没有按预期工作。任何想法我做错了什么?

4

2 回答 2

2

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

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

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

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

或者,对于更新:

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

您可以进行查询以检查设置并根据是否有结果来执行insert_batch或执行。update_batch如果您想每次都插入,您可以在插入之前删除表中的行。但是,如果没有交易,我不会这样做。

于 2012-08-27T15:25:08.413 回答
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";
}
于 2012-08-27T15:17:30.407 回答