我似乎无法解决这个问题,但我的代码插入了1个空白行(第1行)。空白行有空白车名,空车品牌,车价只有“0.00”。此代码用于上载csv文件并从该csv文件获取数据并插入数据库。第一行是列标题,我假设$GetHeaders = fgetcsv($file);
的第一次调用是针对标题的。
$file = fopen($_FILES['fileupload']['tmp_name'],"r");
$GetHeaders = fgetcsv($file);
$CarName = array_search('Car Name', $GetHeaders);
$CarBrand = array_search('Car Brand', $GetHeaders);
$CarPrice = array_search('Car Price', $GetHeaders);
$theQue = "";
while(! feof($file))
{
$GetHeaders = fgetcsv($file);
$theQue .= "INSERT INTO cardb (CarName, CarBrand, Carprice) VALUES ('$GetHeaders[$CarName]', '$GetHeaders[$CarBrand]', '$GetHeaders[$CarPrice]')";
}
fclose($file);
if (mysqli_multi_query($connection, $theQue))
{
echo "Success";
}
答案 0 :(得分:0)
有几件事可能导致这种情况。首先尝试删除csv文件中的标题行。接下来在将数据写入数据库之前检查数据行是否等于空或null。
<?php
//open the csv file for reading
$jhandle = fopen($file_path, 'r');
$row_limit=1000;
while (($jdata = fgetcsv($jhandle, $row_limit, ",")) !== FALSE) {
$car_name = $jdata[0];
$car_brand = $jdata[1];
$car_price = $jdata[2];
If(($car_name != '')||($car_brand != '')||($car_price > 0)){
//write to your database here.
}
//close your while statement
}
答案 1 :(得分:0)
使用此调查结果发布和结束此处,以便遇到fgetcsv问题的其他人将获得此提示。
这很奇怪,但经过几次测试后,我发现fgetcsv正在读取CSV文件中的每一行,但fgetcsv还有一行正在读取,这是一个NULL。
好像有一条看不见的行,它就是最后一排。它只显示在数据库中的第一行可能是因为自动排序或其他东西,但它再次fgetcsv得到的最后一行是NULL。我以为它应该检测到NULL作为EOF?
我做了什么来检测这个bug是我应该首先做的事情,即使用echo vardump显示所有车名,最后一辆车被命名为“NULL”
谢谢你的帮助,你们每个人都给了我一些想法让我找到了这个刺lol