我正在使用phpexcel读取我的xls,我没有问题,但当我试图插入我的数据库中的值时,在控制台上出现了“数组到字符串的转换”。
代码:
$inputFileName = $_FILES['xls']['tmp_name'];
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
// ------------------ COMISIONES ------------------ //
$sheet = $objPHPExcel->getSheet(2);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 1; $row <= $highestRow; $row++) {
$rowData[] = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
foreach ($rowData[0] as $var) {
$sql = "INSERT INTO bd_comisiones (registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir) VALUES ('" . implode(",", $var) . "')";
$sql_insert = $conexion->prepare($sql);
$sql_insert->execute();
}
}数组:
Array
(
[0] => Array
(
[0] => Array
(
[0] => Registro
[1] => CLAVE
[2] => NOMBRE
[3] => RFC
[4] => COMISION
[5] => IVA
[6] => SUBTOTAL
[7] => RETENCION
[8] => NETO
[9] => PRESTAMOS
[10] => NETO_A_RECIBIR
)
) 发布于 2015-07-29 03:10:16
看起来你的implode函数需要稍微修改一下。
如果您有array('a','b','c'),并且希望它是一个字符串,并且每个值都用引号括起来,那么您需要修改下面这一行:
$sql = "INSERT INTO bd_comisiones
(registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir)
VALUES ('" . implode(",", $var) . "')";就像这样:
$sql = "INSERT INTO bd_comisiones
(registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir)
VALUES ('" . implode('","', $var) . "')";这将把","放在每个值之间,而不仅仅是一个逗号。
如果您仍在对其进行故障排除,请尝试使用echo $sql;查看完整格式的SQL语句,以确保它看起来没有问题。
发布于 2015-07-29 03:10:22
你的错误发生在哪一行?
除此之外,您的查询将是不正确的:
$sql = "INSERT ... VALUES ('" . implode(",", $var) . "')";
^^^这将产生
INSERT ... VALUES ('Registro,CLAV,...,NETO_A_RECIBIR')它是单个字符串值。你想要的
$sql = "INSERT ... VALUES ('" . implode("','", $var) . "')";
^-^因此每个组件都有自己的'...'报价集,从而产生
INSERT ... VALUES ('Registro','CLAV',...,'NETO_A_RECIBIR')发布于 2015-07-29 03:12:41
我从未使用过PHP Excel,但我认为问题出在您的insert语句中:当您内爆数组时,只有两个引号!
只需使用以下命令更改您的行:
$sql = "INSERT INTO bd_comisiones (registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir) VALUES ('" . implode("','", $var) . "')";https://stackoverflow.com/questions/31684859
复制相似问题