将数组值插入数据库

时间:2009-07-22 11:09:33

标签: php database arrays

我有一个列出模块ID和sub_module_id的表单,例如

  • ADMIN ===是父模块ID
  • users === 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

请帮助

2 个答案:

答案 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 总是一个好主意。