Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将CSV文件上载到数据库时出错_Php_Mysql_Csv - Fatal编程技术网

使用PHP将CSV文件上载到数据库时出错

使用PHP将CSV文件上载到数据库时出错,php,mysql,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")

我正在尝试使用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!!";
   ?>

我测试了你的代码,效果非常好。。。
当我回显查询时,返回:

    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
有几件事。。 我相信您的文件不存在,这就是为什么您会出现这些错误,请在(!feof($file))

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


如果您的问题仍然存在,请检查我的答案,如果您注意,我的答案与您的代码类似。

以下代码中存在语法错误。因此,替换

$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']."')";


print_r($csv_array)向您展示了什么?为了让它更干净一点,为什么不让您的vars看起来像$cashAmount=$csv_array[0];通过这种方式,您可以只插入$cashAmount而不是$insert_csv['cashAmount'];这里的操作没有问题,只是稍微简单了一点。您是否确定CSV文件中的所有行都包含6个值,如现金、某物、其他某物等。似乎有些行中只有1个值。看起来您在这里根本没有做任何操作,并且可能有一些严重的[SQL注入错误]。您还使用了弃用的
mysql\u查询
,它不应该在新的应用程序中使用,因为它将从PHP的未来版本中删除。并提供了一种向查询中添加数据的简单、可靠的方法。类似指南的指南概述了最佳实践。
$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']."')";
$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']."')";