即时使用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
)
)
答案 0 :(得分:1)
看起来您的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语句,以确保其正常。
答案 1 :(得分:1)
您的错误发生在哪一行?
除此之外,您的查询将不正确:
$sql = "INSERT ... VALUES ('" . implode(",", $var) . "')";
^^^
这会产生
INSERT ... VALUES ('Registro,CLAV,...,NETO_A_RECIBIR')
这是一个SINGLE字符串值。你想要
$sql = "INSERT ... VALUES ('" . implode("','", $var) . "')";
^-^
isntead,因此每个单独的组件都有自己的'...'
引用集,生成
INSERT ... VALUES ('Registro','CLAV',...,'NETO_A_RECIBIR')
答案 2 :(得分:0)
我从未使用过PHP Excel,但我认为问题出现在你的插入语句中:当你内爆数组时,只有两个引号!
只需更改您的行:
$sql = "INSERT INTO bd_comisiones (registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir) VALUES ('" . implode("','", $var) . "')";
答案 3 :(得分:0)
我认为你应该在implode函数中添加单引号,如
VALUES ('" . implode("','", $var) . "')";
获取类似
的字符串VALUES ('A', 'B', 'C');
否则只是
VALUES ('A, B, C');