只需快速查看您的代码,我就注意到了一些不对劲的地方:
if (isset($_POST["import"]))
{
$fileName = $_FILES["file"]["tmp_name"];
if ($_FILES["file"]["size"] > 0)
{
$file = fopen($fileName, "r");
$captabel = true;
$flag = true;
while (($column = fgetcsv($file, 1000, ",")) !== FALSE)
{
if($captabel)
{
$captabel = false;
continue;
}
$celuleNecesare = array(0); <-- Is this being set externally to the code listed here.
foreach ($celuleNecesare as $value)
{
if(trim($column[$value]) == "" || $column[$value] == NULL)
$flag = false;
}
if($flag)
{
$query = "INSERT INTO test
(name ,employee_status, surname, email, address, phone)
VALUES
('" . $column[2] . "','" . $column[7] . "','" . $column[8] . "','" . $column[5] . "','" . $column[0] . "','0" . $column[3] . "')";
$result = mysqli_query($conn, $query);
if (! empty($result))
{
$type = "success";
header( 'refresh: 0; success.php' );
}
else
{
$type = "error";
$message = "Problem in Importing CSV Data";
}
}
}
}
}
你有这条线$celuleNecesare = array(0);,然后循环穿过它,但这本身没有任何作用。
您的代码应该与此类似:
if (isset($_POST["import"]))
{
$fileName = $_FILES["file"]["tmp_name"];
if ($_FILES["file"]["size"] > 0)
{
$file = fopen($fileName, "r");
$captabel = true;
$flag = true;
// Get the first row as the header row.
$headers = fgetcsv($file, 1000, ",");
// Variables to be used.
$counter = 0;
$nameCol = 0;
$statuscol = 0;
$lastnameCol = 0;
$emailAddressCol = 0;
$employeeAddressCol = 0;
$phoneNumberCol = 0;
foreach($headers as $header)
{
// Name Status Last_name email_address employee_address phone_number
// Lets work through the header row.
switch($header)
{
case 'Name' : $nameCol = $counter;
break;
case 'Status' : $statusCol = $counter;
break;
case 'Last_name': $lastNameCol = $counter;
break;
case 'email_address' : $emailAddressCol = $counter;
break;
case 'employee_address' : $employeeAddressCol = $counter;
break;
case 'phone_number' : $phoneNumberCol = $counter;
break;
default : die("Unknown column, ".$header);
break;
}
$counter++;
}
while (($column = fgetcsv($file, 1000, ",")) !== FALSE)
{
$query = "INSERT INTO test
(name ,employee_status, surname, email, address, phone)
VALUES
('" . $column[$nameCol]."','".$column[$employeeStatusCol]."','".$column[$lastnameCol]."','".$column[$emailAddressCol]."','".$column[$employeeAddressCol]."','0".$column[$phoneNumberCol]."')";
$result = mysqli_query($conn, $query);
// This section below would stop after the first record!!!!!
if (! empty($result))
{
$type = "success";
header( 'refresh: 0; success.php' );
}
else
{
$type = "error";
$message = "Problem in Importing CSV Data";
}
}
}
}
最后的 IF 条件意味着您只插入一条记录。不确定这是否意味着,但由于您有一个用于读取数据的 while 循环,因此认为会有更多记录。