選擇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';
}
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章