【问题标题】:Array to DB insert PHP MYSQL数组到数据库插入 PHP MYSQL
【发布时间】:2014-03-27 16:51:07
【问题描述】:

我有一个复选框,它接受一些值,下面的一个是我从矩阵表单中获得的后值。现在我下面的数组值应该像这样格式化

发布价值观:

Array (
    [31_1] => on
    [31_2] => on
    [31_3] => on
    [56_2] => on
    [56_4] => on
    [66_1] => on
    [66_3] => on
) 

预期值:

31=>1,2,3

56=>2,4

66=>1,3

如果我能够像这样将值存储在数据库表 (author_book) 中,我会很高兴:

  S.No      Author_ID       Book_IDs
  1         31              1,2,3
  2         56              2,4
  3         66              1,3

简而言之,帖子值应该存储在数据库表中,以便我进一步处理。我怎样才能做到这一点?

【问题讨论】:

    标签: php mysql arrays arraylist multidimensional-array


    【解决方案1】:

    我相信您只想插入设置为 ON 的 author_id 的值 取消所有设置为OFF的索引

    尝试类似的方法:

    $books=array();
    foreach($array_name as $key=> $value){
        if($value==='on'){
            //prepare the array
            list($author_id,$books[$author_id][])=explode("_",$key)
        }
    }
    
    foreach($temp as $k=>$v){        
        $q->query("INSERT INTO author_book(author_id,books_id) VALUES($k,".implode(',',$v)));
    }
    

    谢谢 并继续提问:)

    【讨论】:

      【解决方案2】:

      这段代码会为你构建查询,记得使用一些数据注入预防机制

      <?php
      
      $x = array (
      "31_1" => "on",
      "31_2" => "on",
      "31_3" => "on",
      "56_2" => "on",
      "56_4" => "on",
      "66_1" => "on",
      "66_3" => "on"
      );
      
      $newarray = array();
      
      foreach($x as $key => $val){
      $key = explode("_", $key);
      $newkey = $key[0];
      $newval = $key[1];
      $newarray[$newkey][] = $newval;
      }
      
      foreach($newarray as $key => $val){
      $query = "INSERT INTO (Author_ID, Book_IDs) VALUES (" . $key . ",'" . join(',', $val) . "')";
      echo $query . "<br />";
      }
      

      【讨论】:

        【解决方案3】:

        给你。也可能有更短的方法:

        <?php
        $array = array (
            '31_1' => 'on',
            '31_2' => 'on',
            '31_3' => 'on',
            '56_2' => 'on',
            '56_4' => 'on',
            '66_1' => 'on',
            '66_3' => 'on',
        );
        
        $new_array = array();
        
        foreach($array as $ind=>$val){
        
            //breaks string at '_' and gets 31 and 1 separately
            $key_val = explode('_',$ind); 
        
            if(array_key_exists($key_val[0],$new_array)){
                    //this is to append if key exists, eg. 31 => 1,2,3
                $new_array[$key_val[0]] = $new_array[$key_val[0]].",".$key_val[1]; 
            }
            else
            {
                $val = $key_val[1];
                $new_array[$key_val[0]] = $val;
            }
        }
        
        print_r($new_array);
        ?>
        

        Fiddle

        【讨论】:

          【解决方案4】:
          foreach($array_name as $key=> $value)
          {
          
          $var1=$key;
          $var2=$value;
          
          // here you can have your db statements to insert the values
          
          
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-05-26
            • 2014-12-02
            • 2015-01-02
            • 1970-01-01
            • 2013-11-30
            • 2011-12-06
            • 2012-04-20
            相关资源
            最近更新 更多