您的位置:首页技术文章
文章详情页

PHP将JSON格式省市(区)二级数据插入数据库

【字号: 日期:2022-09-13 11:02:22浏览:4作者:猪猪

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

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

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

<?php/** author:农夫庄园* website:* url:/p/5543.html*///json格式的地区字符串$area = <<<AREA这里插入json格式省市信息AREA;//将json格式的地区字符串转化为数组,不加参数true则会转化为对象$area_array = json_decode($area, true);//echo ’<pre>’;//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[’省’].’<br/>’; $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[’市名’].’<br/>’; $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;?>

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

标签: PHP
相关文章: