用php将csv转换成mysql
您好,我正在尝试将数据从.csv文件导入mysql表。下面是我正在使用的脚本。在运行它之后,只执行print\r($\文件),它没有插入数据库用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']))
<?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参数不一样,然后我做了不同的“提交”和“提交”。但所有这些问题现在都解决了。谢谢你的时间和耐心。。。