前端代码:
php" id="highlighter_145212">
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<form name= "importform" action= "import.php" method= "post" enctype= "multipart/form-data" > <input type= "hidden" value= "import_goods" name= "file" > <table cellpadding= "2" cellspacing= "1" class = "tb" > <tbody> <tr> <td width= "200" >选择批量上传文档:</td> <td><input type= "file" name= "upfilename" id= "upfilename" value= "" ></td> </tr> <tr> <td colspan= "2" > <input type= "submit" name= "submit" value= "提交" class = "btn" > </td> </tr> </tbody> </table> </form> |
后端代码:import.php文件(这里只粘贴主要代码,具体实现方法需自己完成)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
if (isset( $_post [ 'submit' ])){ stripos (php_os, "win" ) !== false ? setlocale(lc_all, '' ) : setlocale(lc_all, 'zh_cn.gbk' ); $fext = substr ( $_files [ 'upfilename' ][ 'name' ], strrpos ( $_files [ 'upfilename' ][ 'name' ], '.' ) + 1); if ( $fext != 'csv' ) { die ( '请上传csv格式的文件' ,http_referer); } $handle = @ fopen ( $_files [ 'upfilename' ][ 'tmp_name' ], "rb" ); $i = 0; $import_type = '' ; if ( $handle ) { while ( $line_data = fgetcsv ( $handle , 4096, ',' )) { if ( $i == 0) { $import_type = trim( $line_data [0]); $i = 1; } elseif ( intval ( $line_data [0])) { $line_list [] = $line_data ; } } } //循环转换数据格式 foreach ( $line_list as $i => $v ) { foreach ( $v as $j => $value ) { $line_list [ $i ][ $j ] = iconv( 'gbk' , 'utf-8//ignore' , $line_list [ $i ][ $j ]); } } //编码转换 fclose( $handle ); if (! empty ( $line_list )) { // 登记号 $sn = array (); $top_catid = 0; $name = '' ; $func_name = '' ; switch ( $import_type ) { case 'patent' ; $top_catid = 5; $name = '专利申请号' ; $func_name = 'deal_import_patent' ; break ; case 'trademark' ; $top_catid = 4; $name = '商标注册号' ; $func_name = 'deal_import_trademark' ; break ; case 'copyright' ; $top_catid = 2185; $name = '登记号' ; $func_name = 'deal_import_copyright' ; break ; default : die ( '上传文档未明确指定知产类型!' ); break ; } if ( $import_type == 'patent' ) { foreach ( $line_list as $lkey => $lval ) { $lval [2] = trim( $lval [2]); if ( $lval [2] == '专利技术' ) { // 技术专利 if (! empty ( $lval [1])) { if (in_array( $lval [1], $sn )) { die ( '列表中序号为' . $lval [0]. '的知产的' . $name . $lval [1]. '与前面的出现重复!' ); //判断是否有重复的数据(根据自己所需判断) } $sn [] = trim( $lval [1]); } else { die ( '列表中序号为' . $lval [0]. '的知产的' . $name . '为空!' ); } } else { // 非技术专利 $line_list [ $lkey ][1] = '' ; } } } elseif ( $import_type == 'trademark' ) { foreach ( $line_list as $lkey => $lval ) { if (! empty ( $lval [1])) { if (in_array( $lval [1], $sn )) { die ( '列表中序号为' . $lval [0]. '的知产的' . $name . '与前面的出现重复!' ); } $sn [] = $lval [1]; } else { die ( '列表中序号为' . $lval [0]. '的知产的' . $name . '为空!' ); } } } if (! empty ( $sn )) { $sql = 'select serial_number from ' . $table_name . ' where top_catid = ' . $top_catid . ' and serial_number in (\'' .implode( "','" , $sn ). '\')' ; $result = $goods_db ->query( $sql ); $r = $goods_db ->fetch_array(); $exist = array (); foreach ( $r as $k => $v ){ $exist [] = $v [ 'serial_number' ]; } if (! empty ( $exist )) die ( $name . '为:' .implode( ',' , $exist ). '的知产已存在' ); //数据库中是否有相同的数据(根据自己所需判断) } // 调用处理函数 self:: $func_name ( $line_list ); //此时$line_list即为你上传文档的数据,数组格式,根据自己所需将数据导入数据库 die ( '批量导入完成!' ); } } |
.csv文档的格式为:
以上这篇php实现批量上传数据到数据库(.csv格式)的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。