PHP 不同主鍵資料批量更新(支援聯合主鍵)

2021-09-19 18:32:41 字數 1391 閱讀 4053

使用when then進行sql語句拼接,實現不同主鍵資料批量更新(支援聯合主鍵)

public static function updatebatch($tablename = "", $multipledata = array())

$referencecolumnstring .= ")";

$referencecolumnstringend = $referencecolumn[count($referencecolumn)-1];

$wherein = "";

$q = "update ".$tablename." set ";

foreach ( $updatecolumn as $ucolumn )

$referencecolumnstrin**alue .= ")";

$q .= "when ".$referencecolumnstring." = ".$referencecolumnstrin**alue.

" then '".$data[1][$ucolumn]."' ";

}$q .= "else ".$ucolumn." end, ";

}foreach( $multipledata as $data )

$wherein .= ")";

$wherein .= ",";

}$q = rtrim($q, ", ")." where ".$referencecolumnstring." in (". rtrim($wherein, ', ').")";

// update

return db::update(db::raw($q));

} else

}

方法第乙個引數$tablename是資料表名稱。第二個引數$multipledata是修改的資料,該引數需要特殊的資料結構,不過結構比較清晰和簡單。資料結構實際上是乙個陣列,該陣列中的每乙個子陣列表示每一條需要修改的資料,而該子陣列下的兩個陣列:第乙個陣列表示主鍵(單個主鍵時只有一條資料),第二個陣列表示需要修改的資料。

具體如下:

$testcolor =

[[//這個陣列表示每一條需要更新的資料

[//這個陣列表示主鍵

"super_color" => "123sdaffsad4",

"color_name" => "name1",

],[//這個陣列表示更新的內容

"test" => "asjkldhflqwer",]],

[[

"super_color" => "123sdaffsad4",

"color_name" => "name1231",],[

"test" => "asjkldhflqwer",]]

];

Mybatis批量更新 不同記錄,更新不同內容

為了減少效能 1.一次性拉取 需要同步的資料,放入記憶體中 2.為了防止,單次更新資料過大,分次更新 建議一次更新100條 public void syspaymenthistorydata json.tojsonstring allsyscinfo int totalsize allsyscinf...

批量更新資料

update bs storage setstoreqty storeqty a.mqty from select nb disbill.companyid,goodsid,nb disbill.outstoreid,outstorepos,mqty,nb disbill.billno from n...

php批量新增資料與批量更新資料的實現方法

php如果要批量儲存資料我們只要使用sql的insert into語句就可能實現資料批量儲存了,如果是更新資料使用update set就可以完成更新了,操作方法都非常的簡單,下面整理兩個例子.批量資料錄入 設計方法 同時提交多條表單記錄,為每一條記錄設定相同的文字網域名稱稱,然後在表單處理頁中,通過...