整個程序需要兩個文件
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';
}
?>