CodeIgniter-关于将复选框数组插入数据库的说明

CodeIgniter-关于将复选框数组插入数据库的说明,codeigniter,Codeigniter,我不熟悉CodeIgniter和阵列。我试图将每个复选框的值放入数据库中的同一行。我知道我需要循环遍历数组,但是我不知道如何告诉它在数据库中的相应标题下写入值。这是我尝试过的,但它会将所有选项的0写入数据库。感谢所有花时间回答我问题的人 //看法 <input type="text" name="name" /> Name <input type="checkbox" value="1" name="options[]" /> Option 1 <input typ

我不熟悉CodeIgniter和阵列。我试图将每个复选框的值放入数据库中的同一行。我知道我需要循环遍历数组,但是我不知道如何告诉它在数据库中的相应标题下写入值。这是我尝试过的,但它会将所有选项的0写入数据库。感谢所有花时间回答我问题的人

//看法

<input type="text" name="name" /> Name
<input type="checkbox" value="1" name="options[]" /> Option 1
<input type="checkbox" value="2" name="options[]" /> Option 2
<input type="checkbox" value="3" name="options[]" /> Option 3
<input type="checkbox" value="4" name="options[]" /> Option 4
//数据库


|id | name | option1 | option2 | option3 | option4 |

我个人会有不同的命名复选框,并在发送表单之前在视图中通过jQuery进行验证,但下面的代码将为您指明正确的方向

提交表单选项时,数组中的元素数将与您在表单上选择的元素数相同。如果未选中复选框,则数组将为空,因此您的代码:

$option3 = $this->input->post('options[2]');
将尝试获取空数组的第三个元素

您需要遍历现有元素并将这些值分配给变量。 您可以使用以下代码执行此操作:

$myArr = array(1 => 0, 2 => 0, 3 => 0, 4 => 0);   //set all the variables to 0
foreach($_POST['options'] as $checked)          //loop throught the selected options
{
    $myArr[$checked] = $checked;                     //assign to corresponding array element                            
}

$this->add_model->create_person($name, $myArr[1], $myArr[2], $myArr[3], $myArr[4]);

上面的代码不是特别优雅,但我希望它能帮助您

也许我遗漏了一些东西,但是为什么不为每个复选框使用不同的名称属性,因为这些值将插入到不同的列中?i、 e.选项3I使用选项[]数组,因为验证要求至少选择一个复选框。有更好的方法吗?您应该使用
$this->input->post('options')
而不是
$\u post['options']
,这样CI就可以对输入进行XSS过滤。
$myArr = array(1 => 0, 2 => 0, 3 => 0, 4 => 0);   //set all the variables to 0
foreach($_POST['options'] as $checked)          //loop throught the selected options
{
    $myArr[$checked] = $checked;                     //assign to corresponding array element                            
}

$this->add_model->create_person($name, $myArr[1], $myArr[2], $myArr[3], $myArr[4]);