我的表单有多个选择,其中MySQL表列名称为动态选项。
<select id="rankRights" size="10" class="form-control" name="rights[]" multiple>
<?php
$sql = $pdo->query("SELECT * FROM ranks");
$rights = $sql->fetch(PDO::FETCH_ASSOC);
foreach($rights as $key => $value) {
if($key != 'Name' || $key != 'Id') {
echo "<option value=\"".$key."\"";
if($result[$key] == '1') {
echo " selected";
}
echo "> " . $key . "</option>";
}
}
?>
</select>
在表格中,用户权限为列,值为1或0(表示真或假,如下所示)。可以有任意数量的列。
.--------------------------------------------------------------------------------. | Id | Name | ADMIN | ADMIN_EDITUSER | ADMIN_DELETEUSER | etc | '--------------------------------------------------------------------------------' | 1 | Admin | 1 | 1 | 1 | ... | | 2 | Default | 0 | 0 | 0 | ... | '--------------------------------------------------------------------------------'
如果用户在多个选择中选择了列名,我想要做的是将值更新为1,反之亦然。如何将这些发布到PDO查询..
编辑:因此,如果我提交表单(例如从多个选择中选择ADMIN
和ADMIN_EDITUSER
),我会获得像{{{{{{ 1}}和rights[]=ADMIN
- &gt;在这种情况下,我想将列rights[]=ADMIN_EDITUSER
和ADMIN
的值更新为1,和所有其他列(未选择的选项)的值更新为0 。
我已经阅读了以下问题并思考了一些问题,但我现在还不知道如何做到这一点。
答案 0 :(得分:0)
您可以创建一组权限/列名称:
$names = array('ADMIN','ADMIN_EDITUSER',...);
将权限初始化为零:
$permval = array();
foreach ($names as $name)
$permval[$name] = 0;
浏览已发布的值以设置相关权限:
foreach ($_REQUEST as $key => $value)
{
if ( isset($permval[$key]) )
$permval[$key] = $value;
}
这至少为您提供了一个已定义的值列表,您可以使用这些值来绑定一组参数 - 每个权限名称一个。确保权限名称列表和语句准备保持同步。
任何更简单的替代方法可能是动态创建SQL语句,但您可能更喜欢使用PDO。
注意:我没有尝试执行上述任何一项;它可能包含错别字!