我似乎不能弄清楚这一点,但我的代码是插入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";
}
2条答案
按热度按时间gr8qqesn1#
有几件事可能会导致这个...首先,尝试删除csv文件中的标题行。接下来,在将数据行写入数据库之前,检查数据行是否不等于空白或null。
atmip9wb2#
发布并结束此调查结果,以便其他遇到fgetcsv问题的人将得到此提示。
这很奇怪,但经过几次测试后,我发现fgetcsv正在阅读CSV文件中的每一行,但fgetcsv读取的另一行是NULL。
就好像有一个看不见的行,它是最后一行。它只显示在数据库中的第一行,可能是因为自动排序或其他原因,但它再次fgetcsv得到的最后一行是NULL。我认为它应该检测到NULL为NULL?
我所做的检测错误是我应该在第一时间做的事情,这是使用echo vardump显示所有的汽车名称,最后一辆车被命名为“空”
谢谢你们的帮助,你们每个人都给了我一些想法,让我找到了这个。