上传CSV文件,并检查值是否为empy以将其设置为0 php

问题描述 投票:-1回答:1

我想在我的数据库中上传一个csv文件。如果csv文件的单元格为空,我想将值设置为0,因为它会给出错误的Undefined offset。我试图检查for循环中的值,但它不起作用。

$msg = 0;
if (isset($_POST['import'])) {
    $fileName = $_FILES["file"]["tmp_name"];
    if ($_FILES["file"]["size"] > 0) {
        $file = fopen($fileName, "r");
        $i = 0;
        while (($column = fgetcsv($file)) !== FALSE) {
            if ($i > 0) {
                if (!empty($column[0])){
                    //$insertdate = date("Y-m-d", strtotime(str_replace('/', '-', $column[3])));
                    $sql = "INSERT into tab1 (country,jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dece) 
                   values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "','" . $column[4] . "','" . $column[5] . "','" . $column[6] . "','" . $column[7] . "','" . $column[8] . "','" . $column[9] . "','" . $column[10] . "','" . $column[11] . "','" . $column[12] . "')";
                    $result = mysqli_query($conn, $sql);
                    if (isset($result)) {
                        $msg++;
                    }
                }
            }
            $i++;
        }
    }
}
php csv fgetcsv
1个回答
0
投票

我将更新您的代码以添加此部分:

                if( count($column) < 13 ){

                    $tmpI = count($column);

                    while( $tmpI < 14 ){

                        $column[$tmpI] = 0;
                        $tmpI++;
                    }
                }  

代码检查数组中是否有13个元素,如果没有,则创建值为0的缺失键。

    $msg = 0;
if (isset($_POST['import'])) {
    $fileName = $_FILES["file"]["tmp_name"];
    if ($_FILES["file"]["size"] > 0) {
        $file = fopen($fileName, "r");
        $i = 0;
        while (($column = fgetcsv($file)) !== FALSE) {
            if ($i > 0) {
                if (!empty($column[0])){

                    if( count($column) < 13 ){

                        $tmpI = count($column);

                        while( $tmpI < 14 ){

                            $column[$tmpI] = 0;
                            $tmpI++;
                        }
                    }                   

                    //$insertdate = date("Y-m-d", strtotime(str_replace('/', '-', $column[3])));
                    $sql = "INSERT into tab1 (country,jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dece) 
                   values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "','" . $column[4] . "','" . $column[5] . "','" . $column[6] . "','" . $column[7] . "','" . $column[8] . "','" . $column[9] . "','" . $column[10] . "','" . $column[11] . "','" . $column[12] . "')";
                    $result = mysqli_query($conn, $sql);
                    if (isset($result)) {
                        $msg++;
                    }
                }
            }
            $i++;
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.