如何插入多行数据时,插入的数据结构不一致?
insert([ ['email' => 'taylor@example.com', 'votes' => 0], ['email' => 'dayle@example.com', 'votes' => 0,'name'=>'test'] ]);
这种情况你要处理一下数据,给默认值,查出来所有的字段,然后再循环判断一下,如果没有这个字段给一个默认值,就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; }
最终我这样写了
可以考虑用think-orm,挺好用的。
😂等会我看看
就要看你不传的字段是不是必传参数了
前端传过来的字段不确定😂
那表里面的必填字段 改成非必填就不会出现问题(除了ID)
PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 3
保这个错
是不是有不存在的字段哦
我现在是循环了一次,给了默认值 insert([ ['email' => 'taylor@example.com', 'votes' => 0,'name'=>NULL], ['email' => 'dayle@example.com', 'votes' => 0,'name'=>'test'] ]);
插入值与列数据不匹配
字段是动态添加的😂
这种情况你要处理一下数据,给默认值,查出来所有的字段,然后再循环判断一下,如果没有这个字段给一个默认值,就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;
}
最终我这样写了
可以考虑用think-orm,挺好用的。
😂等会我看看
就要看你不传的字段是不是必传参数了
前端传过来的字段不确定😂
那表里面的必填字段 改成非必填就不会出现问题(除了ID)
PDOException: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 3
保这个错
是不是有不存在的字段哦
我现在是循环了一次,给了默认值
insert([
['email' => 'taylor@example.com', 'votes' => 0,'name'=>NULL],
['email' => 'dayle@example.com', 'votes' => 0,'name'=>'test']
]);
插入值与列数据不匹配
字段是动态添加的😂