选择csv文件上传至MySQL(PHP)

整个程序需要两个文件

upload.php       (其实html也OK啦)

upload_file.php

第一个php纯粹是用来选择你要的文件

第二个文件几个步骤:

1.读取选择的文件的类型,名称

2.读取文件内容,以逗号(csv嘛)将内容分割

3.新建一个table,以文件名作为表的名字

4.文件第一行的内容是字段名(我比较喜欢这种csv。。。没字段叫什么数据嘛。。。如果遇到不需要字段的就将$i 那部分删掉就好了)

5.之后文件的每一行内容以数组的形式一行行地插入数据表

6.Successful~害羞


一些东西:在创建新的table的时候需要带上一个tempCoulmn,否则无法插入新的字段,不知道有没有方法减掉这一步


不知有没有办法更好地检测csv文件呢?我这里用的是content type,或许检测后缀名会更加好


upload.php:

<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Please open your .CSV File:</label>
<input type="file" name="file" id="file" /> 
<br/>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
</html>

upload_file.php

<?php
$db = mysql_connect("","root","") or die("Could not connect.");

if(!$db)
	die("no db");
if(!mysql_select_db("upload",$db))
 	die("No database selected.");
 
if ($_FILES["file"]["error"] > 0)
  {
  echo "Error: " . $_FILES["file"]["error"] . "<br />";
  }
else
  {
  echo "Upload: " . $_FILES["file"]["name"] . "<br />";
  //echo "Type: " . $_FILES["file"]["type"] . "<br />";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
  //echo "Stored in: " . $_FILES["file"]["tmp_name"];
  }
  echo "</br>";
if ($_FILES["file"]["type"]=='application/vnd.ms-excel') {
$myfile = fopen($_FILES["file"]["tmp_name"], "r") or die("Unable to open file!");
//echo fread($myfile,filesize($_FILES["file"]["tmp_name"]));
$i=0;
$name=mysql_real_escape_string($_FILES["file"]["name"]);
while (($data = fgetcsv($myfile, ",")) !== FALSE) {
	if ($i==0) {
		mysql_query("CREATE TABLE `".$name."` (
			tempColumn VARCHAR(255)
			)");
		for ($m=0; $m < count($data); $m++) {
			$newColumn=mysql_real_escape_string($data[$m]);
			mysql_query("ALTER TABLE `".$name."` ADD `".$newColumn."` VARCHAR(255) ");
		}
		mysql_query("ALTER TABLE `".$name."` DROP tempColumn");
		$i++;
	}
	else
	{
			$newdata = "'".implode("','",$data)."'";
			mysql_query("insert into `".$name."` values($newdata)",$db);
	}
	echo "Your file has been successfully uploaded";
}
fclose($myfile);
	}else{
		echo 'Sorry,your selected file is not a excel file';
}
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值