未定义的偏移:3错误excel文件上传和INSERT

时间:2012-06-12 12:34:29

标签: php

我使用下面的代码在php中的mysql上传excel和INSERT

public function read_file($table = 'users', $filename = 'test.xls') {


        $this->load->library('Spreadsheet_Excel_Reader');

        //$data = new Spreadsheet_Excel_Reader($pathToFile);
        $data = new Spreadsheet_Excel_Reader();
         $data->read($filename);

        $sql = "INSERT INTO $table (";

        for($index = 1;$index <= $data->sheets[0]['numCols']; $index++){
            $sql.= strtolower($data->sheets[0]['cells'][1][$index]) . ", ";
        }
        $valuesSQL = '';
        $sql = rtrim($sql, ", ")." ) VALUES ( ";
        for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {

            for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
                $valuesSQL .= "\"" . $data->sheets[0]['cells'][$i][$j] . "\"";
                if($j!=$data->sheets[0]['numCols']){
                        $valuesSQL .= ",";
                }
            }
            if($i!=$data->sheets[0]['numRows']){
                $valuesSQL .= "),(";
            }else{
                $valuesSQL .= ")";
            }
        }
        $sqlQuery = $sql . rtrim($valuesSQL);

        return($sqlQuery );
    }

我收到以下错误

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 3

Filename: controllers/userInfo.php

Line Number: 154
A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 3

Filename: controllers/userInfo.php

Line Number: 154

我正在使用codeigniter php框架。

第154行 - &gt; $valuesSQL .= "\"" . $data->sheets[0]['cells'][$i][$j] . "\"";

1 个答案:

答案 0 :(得分:1)

这意味着第3行不存在,或者(更有可能)列“C”是其中一个电子表格行中的空单元格。你应该在使用之前测试isset($ data-&gt; sheets [0] ['cells'] [$ i] [$ j]),如果没有,你可以在SQL中设置一个合适的NULL值。

if isset($data->sheets[0]['cells'][$i][$j]) {
    $valuesSQL .= "\"" . $data->sheets[0]['cells'][$i][$j] . "\""; 
} else {
    $valuesSQL .= 'NULL'; 
}