如何插入多行數(shù)據(jù)時,插入的數(shù)據(jù)結(jié)構(gòu)不一致?
insert([
['email' => 'taylor@example.com', 'votes' => 0],
['email' => 'dayle@example.com', 'votes' => 0,'name'=>'test']
]);
這種情況你要處理一下數(shù)據(jù),給默認(rèn)值,查出來所有的字段,然后再循環(huán)判斷一下,如果沒有這個字段給一個默認(rèn)值,就ok了
public static function completeData($arr){
$keys = array_keys(array_reduce($arr, function($carry, $item) {
return array_merge($carry, $item);
}, []));
foreach ($arr as &$item) {
$item = array_merge(array_fill_keys($keys, null), $item);
}
return $arr;
}
最終我這樣寫了
就要看你不傳的字段是不是必傳參數(shù)了
PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 3
保這個錯
我現(xiàn)在是循環(huán)了一次,給了默認(rèn)值
insert([
['email' => 'taylor@example.com', 'votes' => 0,'name'=>NULL],
['email' => 'dayle@example.com', 'votes' => 0,'name'=>'test']
]);