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

时间:2012-01-20 10:28:00

标签: 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="anstr"><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>

我的qry:

$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")
         )
    );

}

请帮我怎么做。

2 个答案:

答案 0 :(得分:1)

我真的不懂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")
        )
    );
}

答案 1 :(得分:1)

<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