Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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转换成mysql_Php_Mysql_Excel - Fatal编程技术网

用php将csv转换成mysql

用php将csv转换成mysql,php,mysql,excel,Php,Mysql,Excel,您好,我正在尝试将数据从.csv文件导入mysql表。下面是我正在使用的脚本。在运行它之后,只执行print\r($\文件),它没有插入数据库 <?php session_start(); ?> <?php require('includes/dbconnect.php'); ?> <?php require 'includes/header.inc.php'; ?> <?php if(isset($_POST['SUBMIT']))

您好,我正在尝试将数据从.csv文件导入mysql表。下面是我正在使用的脚本。在运行它之后,只执行print\r($\文件),它没有插入数据库

 <?php session_start(); ?>
 <?php require('includes/dbconnect.php'); ?>
 <?php require 'includes/header.inc.php'; ?>

 <?php
  if(isset($_POST['SUBMIT']))
  {
     $fname = $_FILES['csv_file']['name']; //Acquire the name of the file
     $chk_ext = explode(".",$fname);

     $filename = $_FILES['csv_file']['tmp_name'];
     $handle = fopen($filename, "r");       //Open the file for readability
     while (($data = fgetcsv($handle,1000, ",")) !== FALSE)
     {
        $sql = "INSERT into biodata (student_number, fname, lname, level) values('$data[0]','$data[1]','$data[2]')";
        mysql_query($sql) or die(mysql_error());
     }
     fclose($handle);
     echo "Successfully Imported";
 }
 else
 {
     echo "Invalid File";
 }

print_r($_FILES) ;
?>


首先检查文件是否已成功打开:

$handle = fopen($filename, "r");
if( !$handle){
  die( 'Cannot open file fore reading');
}

这实际上是您唯一没有正确处理的地方(希望您已经打开了错误报告,因为这可能只是
fgetcsv()
的问题,错误报告将是至关重要的)。

您的查询有问题。
它需要4列(正如您在列列表中指定的),但只支持3列

$sql = "INSERT into biodata (student_number, fname, lname, level) values('$data[0]','$data[1]','$data[2]')";

一旦您确定了如何访问上传的文件,您还可以考虑使用加载数据填充。如果使用LOCAL关键字(LOAD DATA LOCAL infle),即使在共享主机上也应该可以使用。有关一些示例,请参见:


这样做的好处是比大量插入要快得多,特别是对于大型CSV文件。另外,它很容易使用。

显示了成功导入的
文件/无效文件中的哪一个?
现在显示的是无效文件。Aha。所以,
$\u POST['SUBMIT']
没有设置?这是几个因素的组合。脚本是正确的。我的INSERT和VALUES参数不一样,然后我做了不同的“提交”和“提交”。但所有这些问题现在都解决了。谢谢你的时间和耐心…这是几件事的结合。脚本是正确的。我的INSERT和VALUES参数不一样,然后我做了不同的“提交”和“提交”。但所有这些问题现在都解决了。谢谢你的时间和耐心。。。