将csv数据从第2行导入到mysql数据库中
问题描述:
这是我导入csv数据时使用的代码,但是我应该如何使它从第二行开始导入数据?由于第一行是列名本身(ID,Student Name,Subject Code,Subject Name,Unit,Grade)
。将csv数据从第2行导入到mysql数据库中
if (isset($_POST["submitgrade"])){
if ($_FILES["file"]["name"]){
$filename = explode('.',$_FILES["file"]["name"]);
if ($filename[1] == 'csv')
$handle = fopen($_FILES["file"]["tmp_name"], "r");
while ($data = fgetcsv($handle))
{
$item1 = mysqli_real_escape_string($con, $data[0]);
$item2 = mysqli_real_escape_string($con, $data[1]);
$item3 = mysqli_real_escape_string($con, $data[2]);
$item4 = mysqli_real_escape_string($con, $data[3]);
$item5 = mysqli_real_escape_string($con, $data[4]);
$item6 = mysqli_real_escape_string($con, $data[5]);
$grade = "INSERT into subj (username,name,code,title,unit,grade) values ('$item1','$item2','$item3','$item4','$item5','$item6')";
mysqli_query($con,$grade);
}
fclose($handle);
echo 'Upload Grade Success';
}}
答
权之前while
循环开始通过CSV文件进行迭代,写的声明$data = fgetcsv($handle)
一次。然后按照原样启动循环。循环将从CSV文件中的第二行开始。
答
您可以添加一个计数器和一个变量以方便访问。 $ startAtLine将从第1行开始。
<?php
if (isset($_POST["submitgrade"])){
if ($_FILES["file"]["name"]){
//These two lines are added
$startAtLine = 0;
$counter = 0;
$filename = explode('.',$_FILES["file"]["name"]);
if ($filename[1] == 'csv')
$handle = fopen($_FILES["file"]["tmp_name"], "r");
while ($data = fgetcsv($handle))
{
if(++$counter<$startAtLine)
continue;
$item1 = mysqli_real_escape_string($con, $data[0]);
$item2 = mysqli_real_escape_string($con, $data[1]);
$item3 = mysqli_real_escape_string($con, $data[2]);
$item4 = mysqli_real_escape_string($con, $data[3]);
$item5 = mysqli_real_escape_string($con, $data[4]);
$item6 = mysqli_real_escape_string($con, $data[5]);
$grade = "INSERT into subj (username,name,code,title,unit,grade) values ('$item1','$item2','$item3','$item4','$item5','$item6')";
mysqli_query($con,$grade);
}
fclose($handle);
echo 'Upload Grade Success';
}}
?>
在第19行的C:\ xampp \ htdocs \ veritas \ professor-portal.php中的'(T_WHILE)'中出现“意外”错误 – Lloyd
在上述语句后面加上分号。 – shahsani
您可能在声明后忘记了分号。你应该把它写为 '$ data = fgetcsv($ handle);' – shahsani