zoukankan      html  css  js  c++  java
  • 【TP3.2.3】addAll方法的坑

    问题:做一个导入Excel到数据库的功能中需要用到addAll功能,但是每次执行到addAll()时都会报错,如下

    Insert value list does not match column list: 1136 Column count doesn't match value count at row 1

     问题原因:mysql.class.php文件的insertAll方法存在缺陷

    foreach ($data as $key=>$val){
                    if(is_array($val) && 'exp' == $val[0]){
                        $value[]   =  $val[1];
                    }elseif(is_scalar($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);
                        }
                    }
                }
    }

    'title'=>$v->title? $v->title: ' '这种形式的数组赋值,跟'title'=>$v->title形式的数组赋值,结果是不一样的。

    1.当$v->title的值不存在的时候,数组就相当于array('title'=>)这样了

    2.'title'=>$v->title? $v->title: ' '在$v->title的值不存在时,数组相当于array('title'=>' ')

    前者相当于没赋值,后者相当于赋值为空

    解决方法:在数据录入时要判断值是否存在,代码如下

    foreach($list as $k => $v){
        $dataList[] = [
          'title'        =>  $v['title'] ? $v['title'] : '',
        'name'      =>  $v['name'] ? $v['name'] : ''
        ]
    }
    M('sql') -> addAll($dataList);
  • 相关阅读:
    CSS input
    CSS 伪类选择器
    input placeholder 文字颜色修改
    css flex弹性布局学习总结
    jqGrid使用方法
    GridView控件RowDataBound事件的一个实例
    GridView控件RowDataBound事件中获取列字段值的几种途径 !!!
    .net中ckeditor的应用
    博客第一天
    用python实现数学多元数学方程式计算
  • 原文地址:https://www.cnblogs.com/BearLee/p/11263235.html
Copyright © 2011-2022 走看看