如果用户选择多个复选框PHP,如何将值插入数据库


How to insert values into database if user selects multiple checkboxes PHP

我必须使用复选框为用户插入角色,但为了插入,我写了一个类似的代码,但它插入了值'1'3次(如果选中3个复选框)。

我的HTML:

<tr>
<td align="right" width="47%" valign="top"><img
        src="images/required_field.gif" /> User Role:</td>
<td width="40%" id="answerstr"><input type="checkbox" id="roles_1"
        value="1" name="roles[]" /> <label for="roles_1">X</label><span
        id="levelRole"></span><br />
    <input type="checkbox" id="roles_2" value="2" name="roles[]" /> <label
        for="roles_2">Y</label><br />
    <input type="checkbox" id="roles_3" value="3" name="roles[]" /> <label
        for="roles_3">Z</label>
</td>
</tr>

我的问题:

$roles = $_POST['roles'];
for ($i=0; $i<count($roles); $i++) {
    $check_roles = implode(',', $_POST['roles']);
     $sql1 = $db ->query ( "INSERT INTO user_role_xref( user_id, user_role_id, created_on)
    VALUES ( :p_user_id, :p_user_role_id, :p_created_on)", 
    array (
        'p_user_id' => 81,
         'p_user_role_id' => $check_roles,
         'p_created_on' => date("Y-m-d H:i:s")
         )
    );
}

请帮我怎么做。

我真的不懂implode(',', $_POST['roles'])。是否应将角色保存为逗号分隔成一列?正如sql列所说的user_role_id,而不是ids(复数),我认为每个单独的角色都有一个记录。

首先,尝试foreach,它比for循环更容易读写,而且它能出色地完成任务。试试这样的东西;

foreach ($roles as $role_id) {
    $sql1 = $db ->query ( "INSERT INTO user_role_xref( user_id, user_role_id, created_on)
        VALUES ( :p_user_id, :p_user_role_id, :p_created_on)", 
        array (
            'p_user_id' => 81,
            'p_user_role_id' => $role_id,
            'p_created_on' => date("Y-m-d H:i:s")
        )
    );
}
<input type="checkbox" id="roles_3" value="3" name="roles[]" />
...
<input type="checkbox" id="roles_4" value="4" name="roles[]" />
...
<input type="checkbox" id="roles_5" value="5" name="roles[]" />

在HTML方面将有助于的值范围

$roles = $_POST['roles'];
for ($i=0; $i<count($roles); $i++) {
     $sql1 = $db ->query ( "INSERT INTO user_role_xref( user_id, user_role_id, created_on)
    VALUES ( :p_user_id, :p_user_role_id, now())", 
    array (
        'p_user_id' => 81,
         'p_user_role_id' => $roles[$i]
         )
    );
}

应该修复PHP