我尝试在codeigniter中插入我的复选框数据。但数据没有插入数据库。这是我的视图文件:
<input type="checkbox" name="feature[]" value="WIFI" >
<input type="checkbox" name="feature[]" value="TV">
我试图使用内爆将数组转换为字符串,但是我不知道如何添加$data数组,所以它们一起插入
这是我的控制器:
public function save()
{
$this->load->model('Partner_model');
$feature = $this->input->post('feature');
$fea=array(
'feature'=>json_encode(implode(",",$feature))
);
$user_data= array(
'pname' => $this->input->post('pname'),
'type' => $this->input->post('type'),
'address' => $this->input->post('address'),
'about' => $this->input->post('about'),
'city' => $this->input->post('city'),
'code' => $this->input->post('code')
);
if($this->Partner_model->save($user_data,$fea))
{
$msg = "save sucesss" ;
}
else
{
$msg = "not save";
}
$this->session->set_flashdata('msg', $msg);
$this->load->view('partner_profile');
}
&这是我的模型:
public function save($data,$fea)
{
return $this->db->insert('property', $data,$fea);
}
2条答案
按热度按时间ss2ws0br1#
你的型号有毛病。
你把三个论点传给
insert()
但是你用的第三个是不合适的。该参数应该是一个布尔值,指示是否转义值和标识符。你需要合并$fea
进入$data
这应该在控制器中完成。有一种更简单的方法来创建数组
$user_data
因为它本质上是$_POST
只是使用$this->input->post()
.而且,没有明显的理由说明你为什么要使用
json_encode
. 除非您在从db中检索它时需要它,否则没有理由为此而烦恼。考虑删除json_encode
.首先,改变模式
这里有一个修改过的保存方法
通过评论要求的解释。
打电话给
$this->input->post('pname')
返回的值$_POST['pname']
如果存在,则返回null。当你创建
$user_data
你打了六个电话给$this->input()
每次用不同的“钥匙”复印一份$_POST
.$this->input->post()
不带任何参数返回整个$_POST
数组((见文件)复制
$_POST
使用一行代码。它将包括$_POST['feature']
如果勾选了任何框,但是$_POST['feature']
如果未选中任何框,则不会设置。有两种方法可以测试是否选中了任何框。首先我们可以测试一下
isset($_POST['feature']) == true
或者我们可以测试一下$this->input->post('feature') == true
. 我用第二个打电话这和下面的任何一行都差不多
换句话说,
if($feature)
计算为true,如果$feature
一切都准备好了null
,false
,0,“0”,“”(空字符串),array()(空数组)m3eecexj2#
模型文件应为: