繁体   English   中英

使用php将excel数据导入数据库表

[英]importing the excel data into database table using php

问题是在我的Excel中有369行。 当我回显/打印它显示正确的数据,但当我在数据库表中插入相同的数据时,只插入18 - 30条记录。

if (isset($_POST['Submit'])) {
    $file = $_FILES['csv_file']['tmp_name'];
    $handle = fopen($file, "r");
    if ($file == NULL) {
    error(_('Please select a file to import'));
    redirect(page_link_to('excel_data_upload'));
    }else {
        $conn = connect();
        while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
        {
            $num3 = $filesop[3];
            $num8 = $filesop[8];
            $num9 = $filesop[9];
            $num20 = $filesop[20];
            if($num3!='ExpiryDate' &&$num8!='VCNO' &&$num20!='TotalB2CAmount' && $num9 !='STBNO'){

                $insertAgent =  mysqli_query($conn, "INSERT INTO `upload_billing_data` 
                (`vc_number`,`stb_number`,`operator_id`,`expiry_date`,`monthly_bill_amount`) 
                VALUES ('$num8','$num9',140,'$num3','$num20')");

                if($insertAgent)
                {
                    echo 'succss';
                }else{
                    echo 'error';
                }

            }  
        }
        close($conn);

    }
}

我从excel数据中获取。 我想插入所有记录

更改下面的代码,您可以使用一个查询将所有数据保存到数据库:

$query_insert = array();

while(($filesop = fgetcsv($handle, 1000, ",")) !== false) {
   $num3 = filterString($filesop[3]);
   $num8 = filterString($filesop[8]);
   $num9 = filterString($filesop[9]);
   $num20 = filterString($filesop[20]);

   if ($num3!='ExpiryDate' &&$num8!='VCNO' &&$num20!='TotalB2CAmount' && $num9 !='STBNO') {
      $query_insert[] = "('{$num8}', '{$num9}', 140, '{$num3}', '{$num20}')";
   }  
}

// If no row matched your if, then there will be no row to add to the database
if (count($query_insert)>0) {
   $conn = connect();

   $query_insert_string = implode(', ', $query_insert);

   $query = "INSERT INTO `upload_billing_data` (`vc_number`, `stb_number`, `operator_id`, `expiry_date`, `monthly_bill_amount`) VALUES {$query_insert_string};";
   $insertAgent = mysqli_query($query);

   // The rest of you code 
   ...

   close($conn);
}



// This function makes sure that you string doesn't contain characters that might damage the query
function filterString($string) {
   $string = str_replace(array("\'", '"'), array('', ''), $string);
   $string = filter_var($string, FILTER_SANITIZE_STRING);
   return $string;
}

请检查此修改后的代码

if (isset($_POST['Submit'])) {
    $file = $_FILES['csv_file']['tmp_name'];
    $handle = fopen($file, "r");
    if ($file == NULL) {
    error(_('Please select a file to import'));
    redirect(page_link_to('excel_data_upload'));
    }else {
        $conn = connect();
        while(($filesop = fgetcsv($handle, 1000, ",")) !== false)
        {
            $num3 = $filesop[3];
            $num8 = $filesop[8];
            $num9 = $filesop[9];
            $num20 = $filesop[20];
            if($num3!='ExpiryDate' &&$num8!='VCNO' &&$num20!='TotalB2CAmount' && $num9 !='STBNO'){

                $insertAgent =  mysqli_query($conn, "INSERT INTO `upload_billing_data` 
                (`vc_number`,`stb_number`,`operator_id`,`expiry_date`,`monthly_bill_amount`) 
                VALUES ('".mysqli_real_escape_string($num8)."','".mysqli_real_escape_string($num9)."',140,'".mysqli_real_escape_string($num3)."','".mysqli_real_escape_string($num20)."')");

                if($insertAgent)
                {
                    echo 'succss';
                }else{
                    echo 'error';
                }

            }  
        }
        close($conn);

    }
}

通过使用mysqli_real_escape_string(),您将能够避免sqlinjection问题,并且您将能够处理可能导致问题的引号问题。

在你的其他块中你echo "error" 你可以使用mysqli_error($conn); 准确地确定执行插入时发生的错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM