您的位置:首页 > 编程语言 > PHP开发

PHP 将CSV文件导入到Mysql数据库

2016-09-29 18:01 661 查看
一般导入导出文件格式都为 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

至此 , 点击一下按钮 , 成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Pdo Mysql csv php 导入文件