mysql导入csv文件 第一行有问题,PHP - 导入到MySQL数据库时跳过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";

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.

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.

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.

Thanks in advance!

解决方案

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) {

[...]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值