首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入数组中的值

插入数组中的值
EN

Stack Overflow用户
提问于 2015-07-29 02:55:04
回答 4查看 79关注 0票数 0

我正在使用phpexcel读取我的xls,我没有问题,但当我试图插入我的数据库中的值时,在控制台上出现了“数组到字符串的转换”。

代码:

代码语言:javascript
复制
 $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();
        }
    }

数组:

代码语言:javascript
复制
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
                )

        )    
EN

回答 4

Stack Overflow用户

发布于 2015-07-29 03:10:16

看起来你的implode函数需要稍微修改一下。

如果您有array('a','b','c'),并且希望它是一个字符串,并且每个值都用引号括起来,那么您需要修改下面这一行:

代码语言:javascript
复制
$sql = "INSERT INTO bd_comisiones
  (registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir)
  VALUES ('" . implode(",", $var) . "')";

就像这样:

代码语言:javascript
复制
$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
EN

Stack Overflow用户

发布于 2015-07-29 03:10:22

你的错误发生在哪一行?

除此之外,您的查询将是不正确的:

代码语言:javascript
复制
$sql = "INSERT ... VALUES ('" . implode(",", $var) . "')";
                                        ^^^

这将产生

代码语言:javascript
复制
INSERT ... VALUES ('Registro,CLAV,...,NETO_A_RECIBIR')

它是单个字符串值。你想要的

代码语言:javascript
复制
$sql = "INSERT ... VALUES ('" . implode("','", $var) . "')";
                                         ^-^

因此每个组件都有自己的'...'报价集,从而产生

代码语言:javascript
复制
INSERT ... VALUES ('Registro','CLAV',...,'NETO_A_RECIBIR')
票数 1
EN

Stack Overflow用户

发布于 2015-07-29 03:12:41

我从未使用过PHP Excel,但我认为问题出在您的insert语句中:当您内爆数组时,只有两个引号!

只需使用以下命令更改您的行:

代码语言:javascript
复制
$sql = "INSERT INTO bd_comisiones (registro,clave,nombre,rfc,comision,iva,subtotal,retencion,neto,prestamos,neto_a_recibir) VALUES ('" . implode("','", $var) . "')";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31684859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档