php实现批量上传数据到数据库(.csv格式)的案例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

php实现批量上传数据到数据库(.csv格式)的案例友情提⽰:上传数据的⽂档需要转化为.csv格式的⽂档
前端代码:
<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⽂件(这⾥只粘贴主要代码,具体实现⽅法需⾃⼰完成)
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格式)的案例就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

相关文档
最新文档