數(shù)據(jù)庫數(shù)據(jù)批量插入

數(shù)據(jù)插入的方法我們都知道直接寫成一條語句比較快,但是如果我們想實現(xiàn)每多少條插入一次數(shù)據(jù),要用到一點小小的算法
場景:每三條數(shù)據(jù)插入一次,比如此處有11條數(shù)據(jù)。會余兩條腰處理
1.每次遍歷將數(shù)組存入一個新的數(shù)組。
2.處理九條數(shù)據(jù)。
3.在9條數(shù)據(jù)處理的if語句里,如果有三條數(shù)據(jù),就做一次插入,并置空新數(shù)組。
4.處理9條數(shù)據(jù)之外的數(shù)據(jù)。如果鍵等于最大的鍵,則插入那個數(shù)組

// 這種處理方式有點偏差 但是結(jié)果是一樣的
$arr = [0,1,2,3,4,5,6,7,8,9,10];
$num = 3;
$count = floor(count($arr)/$num)*$num; //取分割點的整數(shù) 此處是9
$countNum = count($arr)-1; //10
foreach ($arr as $key => $data){
    $newArray[] =array('name'=>$data);
    if($key<=$count ) {
        if ($key % $num == 0) {
            DB::table('test')->insert($newArray);
//                    插入數(shù)據(jù)后要置空數(shù)組
            $newArray = array();
        }
    }else {
        if ($key==$countNum){
             DB::table('test')->insert($newArray);
        }
    }
}

sql語句

  • 如果要本文所寫的結(jié)果 應(yīng)該以下代碼
$arr = [0,1,2,3,4,5,6,7,8,9,10];
$num = 3;
$count = floor(count($arr)/$num)*$num; //取五百的整數(shù)
$countNum = count($arr);
foreach ($arr as $key => $data){
    $newArray[] =array('name'=>$data);
    $key = $key+1;
    if($key<=$count ) {
        if ($key % $num == 0) {
            DB::table('test')->insert($newArray);
//                    插入數(shù)據(jù)后要置空數(shù)組
            $newArray = array();
        }
    }else {
        if ($key==$countNum){
            $sql =  DB::table('test')->insert($newArray);
                    if ($sql){
                            return response()->json(['serverTime'=>time(),'ServerNo'=>1,'data'=>['message'=>'數(shù)據(jù)接收完畢']]);
                        }else{
                            return response()->json(['serverTime'=>time(),'ServerNo'=>0,'data'=>['message'=>'數(shù)據(jù)有丟失']]);
                        }
        }
    }
}
圖片.png

2.以上是使用框架的形式,直接傳遞數(shù)組。那么如果我們直接使用原聲的寫法來看下

$array = [
    ['name1','email1'],
    ['name2','email2'],
    ['name3','email3'],
];
$values = '';
foreach ($array as $user){
    $values.= "('$user[0]','$user[1]')";
}
echo $values;

得到的是這個結(jié)果
('name1','email1')('name2','email2')('name3','email3')
根本的原則是,雙引號中單引號里面的變量是可以解析的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容