Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在insert语句中循环_Php_Mysql_Arrays - Fatal编程技术网

Php 如何在insert语句中循环

Php 如何在insert语句中循环,php,mysql,arrays,Php,Mysql,Arrays,我需要在mysql表中插入一个数组,带括号的行就是我需要插入的示例 Array ( [0] => Array ( [batch_id] => 1 [seq_id] => 1 [q_id] => 2046 [a1] => 0 [a2] => 1 [a3] => 2 [a4] => 3 [a5] => 4 ) [1] =&

我需要在mysql表中插入一个数组,带括号的行就是我需要插入的示例

Array
(
    [0] => Array
  (
      [batch_id] => 1
      [seq_id] => 1
      [q_id] => 2046
      [a1] => 0
      [a2] => 1
      [a3] => 2
      [a4] => 3
      [a5] => 4

   )

    [1] => Array
 (
     [batch_id] => 1
    [seq_id] => 2
    [q_id] => 2046
    [a1] => 0
    [a2] => 2
    [a3] => 1
    [a4] => 3
    [a5] => 4        
   )

   [2] => Array
 (
     [batch_id] => 1
    [seq_id] => 3
    [q_id] => 2046
    [a1] => 2
    [a2] => 0
    [a3] => 2
    [a4] => 2
    [a5] => 1
   )
表:

 id   |   r_id   | q_id   | c_id  | ranking 
-------------------------------------------
  18965|  2205    | 2046   |   a1  |   0
  18966|  2205    | 2046   |   a2  |   2
  18967|  2205    | 2046   |   a3  |   3
  18968|  2205    | 2046   |   a4  |   1    
  18969|  2205    | 2046   |   a5  |   4
  19965|  2214    | 2046   |   a1  |   0
  19966|  2214    | 2046   |   a2  |   1
  19967|  2214    | 2046   |   a3  |   1
  19968|  2214    | 2046   |   a4  |   2    
  19969|  2214    | 2046   |   a5  |   3
(20965)|  (11)    | (2046) | (a1)  |   (0)
(20966)|  (11)    | (2046) | (a2)  |   (1)
(20967)|  (11)    | (2046) | (a3)  |   (2)
(20968)|  (11)    | (2046) | (a4)  |   (3)   
(20969)|  (11)    | (2046) | (a5)  |   (4)
(21965)|  (12)    | (2046) | (a1)  |   (0)
(21966)|  (12)    | (2046) | (a2)  |   (2)
(21967)|  (12)    | (2046) | (a3)  |   (1)
(21968)|  (12)    | (2046) | (a4)  |   (3)   
(21969)|  (12)    | (2046) | (a5)  |   (4)
(22965)|  (13)    | (2046) | (a1)  |   (2)
(22966)|  (13)    | (2046) | (a2)  |   (0)
(22967)|  (13)    | (2046) | (a3)  |   (2)
(22968)|  (13)    | (2046) | (a4)  |   (2)   
(22969)|  (13)    | (2046) | (a5)  |   (1)
如果我想以这种方式插入,是否在插入状态中使用循环?Table.id是自动递增的,r\u id是批次id+序列id

$result = $this->query("Select * from table_3");
$new_insert = array();
   $csvr[] = $this->fetch_array($result);

foreach($csvr as $cr){
   $ir_id = $cr['batch_id'].$cr['seq_id'];

        $q_id = $cr['q_id'];

   $query1 = "insert into t1 (id, survey_id, submitted)     value ('$ir_id', '85',time());";

        $this->query($query1);

          foreach ($cr as $k => $v){

                   if(preg_match('{^a\d+$}',$k)){
         $new_insert[] = array(
                                                        'r_id'=>$ir_id,
                                                        'q_id' =>$q_id,
                                                        'c_id' =>$k,
                                                        'ranking'=>$v
                                        );


$query2 = "insert into Table (r_id, q_id, c_id, ranking) value ('r_id', 'q_id','c_id','ranking')";
 $this->query($query2);
                            }

            }

        }

我不知道怎么做。。。。。有人能帮我吗?

也许您正在寻找
插入…值
():

foreach($row as$key=>$r)
因此您可以将数组作为单独的变量进行管理

$row=array();

$row[]=array(
      'batch_id' => 1,
      'seq_id' => 1,
      'q_id' => 2046,
      'a1' => 0,
      'a2' => 1,
      'a3' => 2,
      'a4' => 3,
      'a5' => 4
);
$row[]=array(
      'batch_id' => 2,
      'seq_id' => 2,
      'q_id' => 2047,
      'a1' => 0,
      'a2' => 1,
      'a3' => 2,
      'a4' => 3,
      'a5' => 4
);



 $insert_date =array();

   foreach($row as $r){
       $ir_id = $r['batch_id'].$r['seq_id'];
       $q_id = $r['q_id'];
        foreach($r as $k => $v){

         if(preg_match('{^a\d+$}',$k)){ //update here
                $insert_date[]=array(
                'ir_id'=>$ir_id,
                'q_id'=>$q_id,
                'c_id'=>$k,
                'ranking'=>$v
                );
            }
       }
   }
   print_r($insert_date);

我建议搜索“php数据库教程”(并找到一个使用占位符的教程,即使用pdo或mysqli)。发布的语法不太正确,显示出缺乏其他地方最好介绍的基本概念。谢谢,我是一个新手,我从未学习过php…………谢谢@JOE LEE if(preg_match(“{^a\d+$}”)的意思是什么?如果数组键是一个+数,你可以使用if($k='a1'|$$k='a2'|$$k='a3'|$$k='a4'|$$k='a5'),preg_match({^a\d+})有什么问题吗?我无法编译它。它适用于if($k=='a1'|$$k=='a2'|$$k=='a3'|$$k=='a4'|$$k=='a5')谢谢你的即时回复谢谢你,但这可能不是我想要的答案。无论如何,再次感谢您的回复
$row=array();

$row[]=array(
      'batch_id' => 1,
      'seq_id' => 1,
      'q_id' => 2046,
      'a1' => 0,
      'a2' => 1,
      'a3' => 2,
      'a4' => 3,
      'a5' => 4
);
$row[]=array(
      'batch_id' => 2,
      'seq_id' => 2,
      'q_id' => 2047,
      'a1' => 0,
      'a2' => 1,
      'a3' => 2,
      'a4' => 3,
      'a5' => 4
);



 $insert_date =array();

   foreach($row as $r){
       $ir_id = $r['batch_id'].$r['seq_id'];
       $q_id = $r['q_id'];
        foreach($r as $k => $v){

         if(preg_match('{^a\d+$}',$k)){ //update here
                $insert_date[]=array(
                'ir_id'=>$ir_id,
                'q_id'=>$q_id,
                'c_id'=>$k,
                'ranking'=>$v
                );
            }
       }
   }
   print_r($insert_date);