PHP - 导入到MySQL数据库时跳过csv的第一行 [英] PHP - Skip the first row of csv when importing to MySQL Database

查看:1179
本文介绍了PHP - 导入到MySQL数据库时跳过csv的第一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这些代码将CSV文件的内容导入数据库。

These codes import the contents of a CSV file to the database.

$databasehost = "localhost";
$databasename = "test";
$databasetable = "sample";
$databaseusername ="test";
$databasepassword = "";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "filename.csv";
$addauto = 0;
$save = 1;
$outputfile = "output.sql";

if(!file_exists($csvfile)) {
    echo "File not found. Make sure you specified the correct path.\n";
    exit;
}

$file = fopen($csvfile,"r");

if(!$file) {
    echo "Error opening data file.\n";
    exit;
}

$size = filesize($csvfile);

if(!$size) {
    echo "File is empty.\n";
    exit;
}

$csvcontent = fread($file,$size);

fclose($file);

$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());

$lines = 0;
$queries = "";
$linearray = array();

foreach(split($lineseparator,$csvcontent) as $line) {

    $lines++;

    $line = trim($line," \t");

    $line = str_replace("\r","",$line);

    $line = str_replace("'","\'",$line);

    $linearray = explode($fieldseparator,$line);

    $linemysql = implode("','",$linearray);

    if($addauto)
        $query = "insert into $databasetable values('','$linemysql');";
    else
        $query = "insert into $databasetable values('$linemysql');";

    $queries .= $query . "\n";

    @mysql_query($query);
}

@mysql_close($con);

if($save) {

    if(!is_writable($outputfile)) {
        echo "File is not writable, check permissions.\n";
    }
    else {
        $file2 = fopen($outputfile,"w");

        if(!$file2) {
            echo "Error writing to the output file.\n";
        }
        else {
            fwrite($file2,$queries);
            fclose($file2);
        }
    }

}

echo "Found a total of $lines records in this csv file.\n";

这是它的工作原理。

管理员将收到一个Excel电子表格.xls)文件,并将其保存为.csv文件。文件的第一行将是Excel电子表格的标题。

示例:姓名,电子邮件,联系电话,国家,地址标题。

This is how it works.
The administrator will receive an excel spreadsheet (.xls) file and will save it as .csv file. And the first row of the file will be the 'headers' of the excel spreadsheet.
Example: Name, Email, Contact number, Country, Address headers.

所以在将CSV文件的内容导入到数据库之前,我希望跳过第一行。这意味着导入内容将从CSV文件的第二行开始。

So before importing the contents of the CSV file to the database, i want the first row to be skipped. Which means that the importing of contents will start at the second row of the CSV file.

我可以知道我应该编辑哪部分代码,以及我应该编辑哪些代码?

对不起,因为我是编程PHP 。

May i know which part of codes should i edit and what should i edit it to?
Sorry, as i'm new to programming PHP.

提前感谢!

推荐答案

工作。在您的 foreach 循环拆分之前,您的 $ csvcontent 结果数组到 $ allLines 。然后使用 array_shift 删除此数组的第一个元素(函数也返回此元素,但我们不需要它):

A little change will to the job. Before your foreach loop split your $csvcontent and safe the resulting array to $allLines. Then use array_shift to remove the 1st element of this array (the function also returns this element, but we don’t need it here):

$allLines = split($lineseparator,$csvcontent);
array_shift($allLines); // removes the 1st element

foreach($allLines as $line) {
    [...]

这篇关于PHP - 导入到MySQL数据库时跳过csv的第一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆