我使用下面的代码在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] . "\"";
答案 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';
}