- foreach ($dataSet as $data){
- $value = array();
- foreach ($data as $key=>$val){
- if(is_array($val) && 'exp' == $val[0]){
- $value[] = $val[1];
- }elseif(is_scalar($val)){ // 改为 is_scalar($val) || is_null($val)
- if(0===strpos($val,':') && in_array($val,array_keys($this->bind))){
- $value[] = $this->parseValue($val);
- }else{
- $name = count($this->bind);
- $value[] = ':'.$name;
- $this->bindParam($name,$val);
- }
- }
- }
- $values[] = '('.implode(',', $value).')';
- }
复制代码
第六行只有在判断为标量的时候才会拼接字段,如果是空值 这两个判断就都没有进去,就会导致插入的时候少掉空值的字段 ,改成 is_scalar($val) || is_null($val) 就可以了