Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将CSV导入MYSQL,但忽略标题行_Php_Mysql_Csv_Import - Fatal编程技术网

Php 将CSV导入MYSQL,但忽略标题行

Php 将CSV导入MYSQL,但忽略标题行,php,mysql,csv,import,Php,Mysql,Csv,Import,可能重复: 我知道之前已经讨论过这一点,但我找到的所有答案都与LOAD DATA Infle方法有关,该方法使用IGNORE 1行忽略标题,我在下面的代码中尝试过,但它只是抛出了一个错误 <?php //database connect info here //check for file upload if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file'

可能重复:

我知道之前已经讨论过这一点,但我找到的所有答案都与LOAD DATA Infle方法有关,该方法使用IGNORE 1行忽略标题,我在下面的代码中尝试过,但它只是抛出了一个错误

    <?php
    //database connect info here

    //check for file upload
    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){

        //upload directory
        $upload_dir = "./csv";

        //create file name
        $file_path = $upload_dir . $_FILES['csv_file']['name'];

        //move uploaded file to upload dir
        if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {

            //error moving upload file
            echo "Error moving file upload";

        }

        //open the csv file for reading
        $handle = fopen($file_path, 'r');


        while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {

            //Access field data in $data array ex.
                        $salutation = $data[0];
                        $leadname = $data[1];                           
                        $businessname = $data[2];
                        $address = $data[3];
                        $town = $data[4];
                        $county = $data[5];
                        $postcode = $data[6];
                        $phone = $data[7];                          
                        $email = $data[8];
                        $gasoiluser = $data[9];
                        $dervuser = $data[10];
                        $kerouser = $data[11];
                        $annualconsgasoil = $data[12];
                        $annualconsderv = $data[13];
                        $annualconskero = $data[14];
                        $gasoilmargin = $data[15];
                        $dervmargin = $data[16];
                        $keromargin = $data[17];
                        $fueldetails = $data[18];   
                        $lubesdetails = $data[19];  
                        $othernotes = $data[20];                            
                        $sentletterday = $data[21];
                        $sentlettermonth = $data[22];
                        $sentletteryear = $data[23];
                        $sentpostcardday = $data[24];
                        $sentpostcardmonth = $data[25];
                        $sentpostcardyear = $data[26];                          
                        $sentquoteday = $data[27];
                        $sentquotemonth = $data[28];
                        $sentquoteyear = $data[29];
                        $lastvisitedday = $data[30];
                        $lastvisitedmonth = $data[31];
                        $lastvisitedyear = $data[32];
                        $receivegasoilmailinglist = $data[33];
                        $receivedervmailinglist = $data[34];
                        $receivekeromailinglist = $data[35];
                        $gasoilmailinglist = $data[36];
                        $dervmailinglist = $data[37];
                        $keromailinglist = $data[38];   
                        $mailtype = $data[39];                      
                        $createdby = $data[40];

            echo 'Import Successful : ';
            echo $leadname;
            echo '<br/>';

            //Use data to insert into db
            $sql = sprintf("INSERT IGNORE hqfjt_chronoforms_data_addupdatelead (salutation,leadname,businessname,address,town,county,postcode,phone,email,gasoiluser,dervuser,kerouser,annualconsgasoil,annualconsderv,annualconskero,gasoilmargin,dervmargin,keromargin,fueldetails,lubesdetails,othernotes,sentletterday,sentlettermonth,sentletteryear,sentpostcardday,sentpostcardmonth,sentpostcardyear,sentquoteday,sentquotemonth,sentquoteyear,lastvisitedday,lastvisitedmonth,lastvisitedyear,receivegasoilmailinglist,receivedervmailinglist,receivekeromailinglist,gasoilmailinglist,dervmailinglist,keromailinglist,mailtype,createdby) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')",
                        mysql_real_escape_string($salutation),
                        mysql_real_escape_string($leadname),                            
                        mysql_real_escape_string($businessname),
                        mysql_real_escape_string($address),
                        mysql_real_escape_string($town),
                        mysql_real_escape_string($county),
                        mysql_real_escape_string($postcode),
                        mysql_real_escape_string($phone),                           
                        mysql_real_escape_string($email),
                        mysql_real_escape_string($gasoiluser),
                        mysql_real_escape_string($dervuser),
                        mysql_real_escape_string($kerouser),
                        mysql_real_escape_string($annualconsgasoil),
                        mysql_real_escape_string($annualconsderv),
                        mysql_real_escape_string($annualconskero),
                        mysql_real_escape_string($gasoilmargin),
                        mysql_real_escape_string($dervmargin),
                        mysql_real_escape_string($keromargin),
                        mysql_real_escape_string($fueldetails), 
                        mysql_real_escape_string($lubesdetails),    
                        mysql_real_escape_string($othernotes),                          
                        mysql_real_escape_string($sentletterday),
                        mysql_real_escape_string($sentlettermonth),
                        mysql_real_escape_string($sentletteryear),
                        mysql_real_escape_string($sentpostcardday),
                        mysql_real_escape_string($sentpostcardmonth),
                        mysql_real_escape_string($sentpostcardyear),                            
                        mysql_real_escape_string($sentquoteday),
                        mysql_real_escape_string($sentquotemonth),
                        mysql_real_escape_string($sentquoteyear),
                        mysql_real_escape_string($lastvisitedday),
                        mysql_real_escape_string($lastvisitedmonth),
                        mysql_real_escape_string($lastvisitedyear),
                        mysql_real_escape_string($mailtype),
                        mysql_real_escape_string($receivegasoilmailinglist),
                        mysql_real_escape_string($receivedervmailinglist),
                        mysql_real_escape_string($receivekeromailinglist),
                        mysql_real_escape_string($gasoilmailinglist),
                        mysql_real_escape_string($dervmailinglist),
                        mysql_real_escape_string($keromailinglist),                         
                        mysql_real_escape_string($createdby)
                        );
            mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));


        }


        //delete csv file
        unlink($file_path);
    }
    ?>

只需从循环之前的文件中读取,手动跳过一行即可:

//open the csv file for reading
$handle = fopen($file_path, 'r');

// read the first line and ignore it
fgets($handle); 

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
  // do your thing
}

只需在循环之前从文件中读取,手动跳过一行即可:

//open the csv file for reading
$handle = fopen($file_path, 'r');

// read the first line and ignore it
fgets($handle); 

while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
  // do your thing
}

如果要以编程方式执行此操作,请添加一个计数器变量,并在其为0时继续,例如第一行。但是,当您可以使用
加载数据填充
时,为什么要以编程方式执行此操作?那么,为什么您认为
加载数据填充
不适合您的需要呢,您可能需要考虑切换到更现代的MySqLi或PDO,并使用准备好的语句来加快进程。如果您想以编程方式添加一个计数器变量和<代码>继续<代码>,当它的0行,例如第一行。但是,当你可以使用<代码>加载数据< /COD> >时,为什么你要用编程来实现它?为什么你认为加载数据Ib/Case>不适合你的需求?而且,你可能想考虑切换到更现代的MySqLi或PDO,并使用准备好的语句来加快进程。很好,谢谢!,那很好用。