我再次发现自己受到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');
}
到我的控制器,但它根本无法正常工作。我有什么想法吗?
答案 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_batch
或update_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";
}