zcl_ccc 发表于 2017-12-30 15:50:44

php+mysql实现数据分批插入

<?php  

/**  

* Created by PhpStorm.  

* User: Soup  

* Date: 2016/12/29  

* Time: 21:04  

*/  

  
$mysqli = new mysqli('localhost','root','123456','test');
  

  

  

  
if ($mysqli->connect_error) {
  
   die('Connect Error (' . $mysqli->connect_errno . ') '
  
         . $mysqli->connect_error);
  
}
  

  
/*
  
*@param $data array 要插入的数据
  
*@param $each int 每次插入的条数
  
*/
  
function batchInsert($data,$each){
  

  
   $num = ($data);      // 数据总数
  
   $step = ( $num/$each);// insert执行总次数
  

  

  
   $j = 1;
  
   $s = $step;
  

  
   foreach ($data as $val){    // 目前仅仅是起到循环作用
  
         if($j > $step) break;
  
         $arr2 = ($data, ($step - $s) * $each, $each);   // 每次取100条
  
         $sql = "insert into batch VALUES ";
  
         foreach($arr2 as $v){
  
             $exist = $GLOBALS['mysqli']->query("select * from batch where number = '$v' limit 1 "); // 检查要插入的数据是否已存在
  
             $row = $exist->fetch_array(MYSQLI_ASSOC);
  
             if(empty($row)){
  
               $sql .= "(null,$v,now()),";   // 将sql语句拼接起来
  
             }
  
         }
  
         $sql = ($sql, ',');
  
         $result =$GLOBALS['mysqli']->query($sql);
  
         echo $sql,'<br>';
  
         $j++;
  
         $s--;
  
   }
  
   return $result;
  
}
  

  
// 先测试简单的数字插入
  
for ($i = 1;$i <= 505;++$i){
  
   $arr[$i] = $i;
  
}
  

  
(batchInsert($arr,100));
页: [1]
查看完整版本: php+mysql实现数据分批插入