csv PHP mysql INSERT导致第一行为空

p1iqtdky  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(124)

我似乎不能弄清楚这一点,但我的代码是插入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";
}
gr8qqesn

gr8qqesn1#

有几件事可能会导致这个...首先,尝试删除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
}
atmip9wb

atmip9wb2#

发布并结束此调查结果,以便其他遇到fgetcsv问题的人将得到此提示。
这很奇怪,但经过几次测试后,我发现fgetcsv正在阅读CSV文件中的每一行,但fgetcsv读取的另一行是NULL。
就好像有一个看不见的行,它是最后一行。它只显示在数据库中的第一行,可能是因为自动排序或其他原因,但它再次fgetcsv得到的最后一行是NULL。我认为它应该检测到NULL为NULL?
我所做的检测错误是我应该在第一时间做的事情,这是使用echo vardump显示所有的汽车名称,最后一辆车被命名为“空”
谢谢你们的帮助,你们每个人都给了我一些想法,让我找到了这个。

相关问题