PHP 將CSV文件導入到Mysql數據庫

一般導入導出文件格式都爲 Excel , 最近項目需要 , 涉及到 CSV格式的文件導入 , 直接上代碼看一下:

一:簡單的設置個form表單按鈕:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>導入CSV文件人員信息</title>
</head>
<body>
	<form action="<?php echo site_uri('Portal/Home/synchro_yiqi_account')?>" method="post" enctype="multipart/form-data">  
    <p>請選擇要導入的CSV文件:<br/><br/>
    <input type="file" name="file"> 
    <input type="submit" class="btn" value="導入CSV">
</form> 
</body>
</html>



注意:(1)一定不要忘記 enctype  的部分。

對應的解釋:

不對字符編碼。在使用包含文件上傳控件的表單時,必須使用該值。

(2)action 要設置正確

:PHP操作

function synchro_yiqi_account(){
	$filename = $_FILES['file']['tmp_name'];
	if(empty($filename)){
		echo '請選擇要導入的CSV文件';
		exit();
	}
	$handle = fopen($filename, 'r');
	$result = $this->input_csv($handle);
	$len_result = count($result);
	if($len_result == 0){
		echo '沒有任何數據';
		exit();
	}
	for ($i=0; $i < $len_result; $i++) {
		$username = $result[$i][0];
		$password = '3ZC1dO0t6XZnXtDO';
		$dept_id = 1;//部門
		$firstname = $result[$i][1];
		$email = $result[$i][2];
		$registration_date = date('Y-m-d H:i:s');
		$nickname = $result[$i][0];
		$data_values .= "('$username','$password','$dept_id','$firstname','$email','$registration_date','$nickname'),"; 
	}
	$data_values = substr($data_values,0,-1); //去掉最後一個逗號
	fclose($handle);
	$db = new Db_Pdo('DB_HOST', 'DB_PORT', 'DB_NAME', 'DB_USER', 'DB_PWD');//數據庫設置
	$sql = "INSERT INTO `account` (`username`,`password`,`dept_id`,`firstname`,`email`,`registration_date`,`nickname`) VALUES $data_values";
	$query = $db->query($sql);
	if($query){
		echo '導入成功';
	}else{
		echo '導入失敗';
	}
}

function input_csv($handle){
	$out = array ();
	$n = 0;
	//注意行的最大長度
	while ($data = fgetcsv($handle,10000)){
		$num = count($data);
		for ($i=0; $i < $num; $i++) { 
			$out[$n][$i] = $data[$i];
		}
		$n ++;
	}
	return $out;
}

操作使用的Pdo類庫見:http://download.csdn.net/detail/for_my_own_voice/9643224

至此 , 點擊一下按鈕 , 成功!

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