当前位置: 首页 > news >正文

php+生成json+省市,PHP将JSON格式省市(区)二级数据插入数据库

在网站开发过程中,很多情况下都要用到省市(区)二级联动下拉菜单,比如地址信息,以及天气等API接口调用,等等,而且具有通用性,一次入库,到处使用,前面农夫庄园相关文章提到过该方法,但是网上找到的省市信息比较坑,很多将县一级的城市也列到区市里,后面还要删除,比较麻烦,后来在测试天气API的时候,找到一个更好的json格式的省市信息,应该是比较准确了,这里将相关代码列出如下,希望给大家提供帮助:

首先需要下载我提供的包含json格式省市信息的文件:sxinfo.txt

然后将该文件中的json格式数据拷贝到下面代码中相应的位置(或者你也可以从文件流中读取省市信息到字符串中,然后进行处理,这里不赘述):

/*

* author:农夫庄园

* website:

* url:/p/5543.html

*/

//json格式的地区字符串

$area = <<

这里插入json格式省市信息

AREA;

//将json格式的地区字符串转化为数组,不加参数true则会转化为对象

$area_array = json_decode($area, true);

//echo '

';

//print_r($area_array);

$areas = $area_array['areas'];

$pdo = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'user', 'pass'); //将相应位置替换成你的数据库对应信息

//开启事务支持

$pdo->beginTransaction();

foreach ($areas as $area):

//echo '省/直辖市:'.$area['省'].'
';

$province = $area['省'];

$stmt = $pdo->prepare("INSERT INTO province(`name`) VALUES(:name)");

$stmt->bindParam(':name', $province);

if ($stmt->execute()) {

$cities = $area['市'];

foreach ($cities as $city) {

//echo '|---市/区/自治州:'.$city['编码'].'-'.$city['市名'].'
';

$cid = $city['编码'];

$name = $city['市名'];

//查询省份id[province表中的name是唯一的]

$query = $pdo->prepare("SELECT id FROM province WHERE name = '".$province."'");

$query->execute();

//获取省份id

$pid = $query->fetchColumn();

$stmt2 = $pdo->prepare("INSERT INTO city(`id`,`name`,`p_id`) VALUES(:id,:name,:pid)");

$stmt2->bindParam(':name',$name);

$stmt2->bindParam(':pid',$pid);

$stmt2->bindParam(':id',$cid);

if($stmt2->execute()):

continue;

else:

echo '插入城市'.$name.'失败!';

//如果插入失败执行回滚操作

$pdo->rollBack();

$pdo=null;

return;

endif;

}

}else{

echo "插入省份".$province."失败!";

//如果插入失败执行回滚操作

$pdo->rollBack();

$pdo=null;

return;

}

endforeach;

//如果所有数据插入成功执行提交操作

$pdo->commit();

$pdo = null;

?>

至此,执行上述代码,就可以将省市信息插入你的数据库了。

相关文章:

  • Windows重装导致Ubuntu无法启动,Grub信息丢失的解决方法
  • php 查看对象,php如何查看对象方法
  • flashback使用记录
  • 打印表格php,php – 如何使用简单的html dom打印表格的单元格
  • Winforms: Windows 7中Taskbar的新效果(3)——进度条
  • java题有两个矩阵A和B,java_java解一个比较特殊的数组合并题,给定两个排序后的数组A和B,其 - phpStudy...
  • QQ游戏到底是如何实现百万人同时在线并保持游戏高效率的呢?
  • matlab随机生成点图,matlab随机生成散点图
  • 菊子曰
  • php编写异常处理,PHP实现异常处理类的方法
  • Linux + FreeTDS + unixODBC + Haskell 访问 SQL Server 数据库
  • matlab函数accumarray,MATLAB常用函数
  • ora-12514问题解决
  • mysql数据库全文本搜索,MySQL必知必会——第18章 全文本搜索 读书笔记
  • 淘宝定制手机:移动电子商务战略及其背后
  • hexo+github搭建个人博客
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Akka系列(七):Actor持久化之Akka persistence
  • extjs4学习之配置
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Vue 动态创建 component
  • 闭包,sync使用细节
  • 从零开始的无人驾驶 1
  • 给初学者:JavaScript 中数组操作注意点
  • 机器学习学习笔记一
  • 离散点最小(凸)包围边界查找
  • 利用jquery编写加法运算验证码
  • 前嗅ForeSpider中数据浏览界面介绍
  • 一份游戏开发学习路线
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • Spring第一个helloWorld
  • ​configparser --- 配置文件解析器​
  • (C语言)fread与fwrite详解
  • (C语言)逆序输出字符串
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (算法设计与分析)第一章算法概述-习题
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)appium-desktop定位元素原理
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)关于多人操作数据的处理策略
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .Net FrameWork总结
  • .NET NPOI导出Excel详解
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET实现之(自动更新)
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [2016.7.Test1] T1 三进制异或
  • [Deep Learning] 神经网络基础