我收到以下错误:
致命错误:第482行的C:\ xampp \ htdocs \ servisa \ Excel \ reader.php中允许的内存大小为33554432字节(试图分配2个字节)
我必须从excel文件中读取并插入到mysql数据库中。 我正在读一个大的excel文件(13 mb,9000行),把它放到一个数组中,然后我在读取数组时生成插入查询,有没有办法可以用更少的内存来做到这一点? 我知道我可以在php.ini中设置更多的moemory,但我不认为这是一个很好的解决方案。是吗?
这是我的代码,对不起我可怕的英语。
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read('PAMI/PAMI.XLS');
$arreglo = array(array());
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++)
{
if ($i == 1)
continue;
$nomCompleto = mysql_real_escape_string($data->sheets[0]['cells'][$i][3]);//str_replace("`", "", str_replace("'", "", $data->sheets[0]['cells'][$i][3]));
$parts = explode(" ", $nomCompleto);
$apellido = array_shift($parts);
$nombre = implode(" ", $parts);
$nroBenef = $data->sheets[0]['cells'][$i][1];
$dni = $data->sheets[0]['cells'][$i][5];
$tipoDni = $data->sheets[0]['cells'][$i][4];
$sexo = $data->sheets[0]['cells'][$i][8];
$domicilio = $data->sheets[0]['cells'][$i][9];//mysql_real_escape_string($data->sheets[0]['cells'][$i][9].' '.$data->sheets[0]['cells'][$i][10]);
$date = str_replace('/', '-', $data->sheets[0]['cells'][$i][6]);
$fnac = date('Y-m-d', strtotime($date));
$arreglo[$i][0] = $apellido;
$arreglo[$i][1] = $nombre;
$arreglo[$i][2] = $dni;
$arreglo[$i][3] = $nroBenef;
$arreglo[$i][4] = $tipoDni;
$arreglo[$i][5] = $sexo;
$arreglo[$i][6] = $domicilio;
$arreglo[$i][7] = $fnac;
}
$sql ="insert into clientespami (apellido,nombre,dni,nroBeneficiario,tipoDni,sexo,domicilio,fechaNac) values ";
$valuesArr = array();
foreach($arreglo as $fila)
{
$ape = $fila[0];
$nom = $fila[1];
$dni = $fila[2];
$ben = $fila[3];
$tipo = $fila[4];
$sex = $fila[5];
$domi = $fila[6];
$nac = $fila[7];
$valuesArr[] = "('$ape', '$nom', '$dni','$ben','$tipo','$sex','$domi','$nac')";
}
$sql .= implode(',', $valuesArr);
//echo $sql;
mysql_query($sql,$conexion);
$cant = mysql_affected_rows();