php - 使用 PHP 将 CSV 文件上传到数据库时出错

标签 php mysql csv

我正在尝试使用 PHP 将 CSV 文件上传到数据库中的现有表中。

这是我的完整代码:

<?php
include("detail.php");


 $connect = mysql_connect("$host", $user, $password) or die("Couldn't connect to SQL  Server on $myServer");
 mysql_select_db("$database") or die("Couldn't open database $myDB");

 if (mysqli_connect_errno())
 {
 echo "Failed to connect to MySQL: " . mysql_connect_error();
 }


 define('CSV_PATH','E:/4th Year/FYP/'); // specify CSV file path

  $csv_file = CSV_PATH . "Cash2011.csv"; // Name of your CSV file
 $csvfile = fopen($csv_file, 'r');
 $theData = fgets($csvfile);
 $i = 0;
 while (!feof($csvfile))
 {
   $csv_data[] = fgets($csvfile, 1024);
   $csv_array = explode(",", $csv_data[$i]);
   $insert_csv = array();
   $insert_csv['cashAmount'] = $csv_array[0];
   $insert_csv['cashReceivedDate'] = $csv_array[1];
   $insert_csv['customerID'] = $csv_array[2];
   $insert_csv['invoiceNo'] = $csv_array[3];
   $insert_csv['monthNum'] = $csv_array[4];
   $insert_csv['yearNum'] = $csv_array[5];
   $query = "INSERT INTO cash2011(cashAmount,cashReceivedDate,invoiceNo,monthNum,yearNum) VALUES ('','".$insert_csv['cashAmount']."','".$insert_csv['cashReceivedDate']."','".$insert_csv['customerID']."','".$insert_csv['invoiceNo']."','".$insert_csv['monthNum']."','".$insert_csv['yearNum']."')";
   $n=mysql_query($query, $connect);
   $i++;
   }
   fclose($csvfile);
   echo "File data successfully imported to database!!";
   ?>

这些是我不断收到的错误: undefined offset :C:\Apache2.2\htdocs\clearTables.php 第 47 行中的 1(即 $insert_csv['cashAmount'] = $csv_array[0];)。 undefined offset :C:\Apache2.2\htdocs\clearTables.php 第 48 行中的 2。

有谁知道问题出在哪里吗? 谢谢

最佳答案

我测试了你的代码,并且工作得很好...... 并且,当我回显查询时,返回:

    INSERT INTO cash2011(cashAmount,cashReceivedDate,invoiceNo,monthNum,yearNum) 
VALUES ('','ad4213','ad4214','ad4215','ad4216','adware','ad7777 ')
    //'','ad4213','ad4214','ad4215','ad4216','adware','ad7777 ' -> data in my example csv file

有几件事.. 我相信您的文件不存在,这就是您出现这些错误的原因,请尝试在 while (!feof($file))

之前检查此行
 if(is_file($csv_file)){ //your code}

此外,在您的查询中,您有 5 个值,而行定义中只有 4 个值。 而且,为什么那里有一个 ,

如果您的问题仍然存在,请查看我的回答 here如果您仔细观察,会发现与您的代码类似。

关于php - 使用 PHP 将 CSV 文件上传到数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21997691/

相关文章:

php - 框架头脑 Storm

mysql:无法修改或更新日期值 0000-00-00 的列

php - 如何排队插入以创建批量插入

python - 带有 2 行标题并导出到 csv 的 pandas 数据框

python - 逗号 csv 文件后的最后一个值

javascript - Ajax调用插入

php - 提交具有一个功能的两个表单不起作用

php - Laravel 文档中类型提示的定义?

mysql - 在sql子查询中访问变量

python - 根据第一列中的日期拆分大型 csv 文件 Python 3.4.3