我有一个列出模块ID和sub_module_id的表单,例如
此处管理员显示在菜单中,用户位于管理员
内现在在表格中我使用了复选框,如
[]Admin
[]Users
用于父模块ID admin
<input id='module_permission[]' onclick=\"selectall()\" type='checkbox' value='".$key."' name='module_permission[]' $val_checked ><b>".$val."</b><br> ";
用于子模块
<input type='checkbox' id='sub_module_permission[$l][]' name='sub_module_permission[$l][]' value='".$key1 ."' onclick=\"selectParent($l);\" $val_checked>".$val1."<br> ";
当我点击复选框时,它的id得到发布,我需要插入数据库,但我无法在数据库中插入sub _module id
发布
$module_id=$_post[module_permission]
foreach($module_id as $key=>$value){
$sql2 = "INSERT INTO user_permissions(permission_id, employee_cd,module_id) values
(PERMISSION_ID_seq.nextval,'$employee_cd','$value')";
$this->db->db_query($sql2);
}
for sub _modules
$sub_module_id =$_POST['sub_module_permission'];
print_r($sub_module_id);
foreach($sub_module_id as $sub_key=>$sub_value)
{
echo $sub_value[1];
$sql4 = "INSERT INTO user_permissions(permission_id, employee_cd,module_id) values
(PERMISSION_ID_seq.nextval,'$employee_cd','$sub_value')";
HERE父模块id值插入数据库但不插入sub_module
请帮助
答案 0 :(得分:2)
所以当你print_r($ sub_module_id)时打印出来的东西;和echo $ sub_value [1];?
在vars加入后你的查询字符串是什么样的? echo $ sql4;
尝试直接在SQL中运行查询字符串,而不是通过PHP。如果您有SQL错误或PHP错误,这将告诉您。如果SQL没问题,请在PHP中添加一些错误检查,以便查看失败的位置。通常我将所有查询包装在以下内容中:
if(!$result=$mysqli->query($query))
throw new Exception($query. " " .$mysqli->error);
从您的评论和现在格式正确的代码中,您可以看到您没有引用子模块的第二维。换句话说,您正试图将数组子化为SQL语句。
这就是你所拥有的:
$sub_module_id =$_POST['sub_module_permission']; //a 2d array
print_r($sub_module_id);
foreach($sub_module_id as $sub_key=>$sub_value){
echo $sub_value[1];
$sql4 = "INSERT INTO user_permissions(permission_id, employee_cd,module_id)
values(PERMISSION_ID_seq.nextval,'$employee_cd','$sub_value')";
}
这就是你需要的:
$sub_module_id =$_POST['sub_module_permission']; //a 2d array
print_r($sub_module_id);
foreach($sub_module_id as $sub_key=>$sub_value_arr){ //values are an array not a scalar
echo $sub_value_arr[1];
$sub_value= $sub_value_arr[1]; //get scalar for SQL
$sql4 = "INSERT INTO user_permissions(permission_id, employee_cd,module_id)
values(PERMISSION_ID_seq.nextval,'$employee_cd','$sub_value')";
}
答案 1 :(得分:0)
不相关,但如果您从表单中获取该输入(实际上,即使您不是),清理SQL 总是一个好主意。