当我使用PHP将其上传到MySQL时,我想跳过CSV(标题部分)的第一行,但是它总是将第一行插入MySQL表中,并且也没有上传MySQL中的总记录。我的CSV中有1000条记录,但一次只能上传174条记录。我正在使用以下代码将CSV上传到MySQL。任何人都知道我在做什么错。
<?php
include 'config.php';
$flag = true;
if(isset($_POST["import"])){
$filename=$_FILES["file"]["tmp_name"];
if($_FILES["file"]["size"] > 0)
{
$file = fopen($filename, "r");
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
{
if($flag)
{
$flag = false;
continue;
}
$sql = "INSERT into tbl_customer(customer_name,customer_excise_code,city)
values ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";
$result = mysqli_query($conn, $sql);
if(!isset($result))
{
echo "<script type=\"text/javascript\">
alert(\"Invalid File:Please Upload CSV File.\");
window.location = \"index.php\"
</script>";
}
else {
echo "<script type=\"text/javascript\">
alert(\"CSV File has been successfully Imported.\");
window.location = \"index2.php\"
</script>";
}
}
fclose($file);
}
}
?>
答案 0 :(得分:0)
您可以尝试以下建议:
if($flag) {...}
之前检查文件中的空行isset()
的检查将始终返回true,因为mysqli_query()返回布尔值或对象,因此您不知道该语句是否正确执行。您执行INSERT
语句,在这种情况下,来自mysqli_query()
的预期结果将是布尔值,因此只需检查$result
。PHP:
<?php
$flag = true;
...
while (($getData = fgetcsv($file, 10000, ",")) !== FALSE) {
if (is_null($getData[0])) {
continue;
}
if ($flag) {
$flag = false;
continue;
}
...
$result = mysqli_query($conn, $sql);
if (!$result) {
...
} else {
...
}
...
}
...
?>