PHP將JSON格式省市(區(qū))二級數(shù)據(jù)插入數(shù)據(jù)庫
在網(wǎng)站開發(fā)過程中,很多情況下都要用到省市(區(qū))二級聯(lián)動下拉菜單,比如地址信息,以及天氣等API接口調(diào)用,等等,而且具有通用性,一次入庫,到處使用,前面農(nóng)夫莊園相關(guān)文章提到過該方法,但是網(wǎng)上找到的省市信息比較坑,很多將縣一級的城市也列到區(qū)市里,后面還要刪除,比較麻煩,后來在測試天氣API的時(shí)候,找到一個更好的json格式的省市信息,應(yīng)該是比較準(zhǔn)確了,這里將相關(guān)代碼列出如下,希望給大家提供幫助:
首先需要下載我提供的包含json格式省市信息的文件:sxinfo.txt
然后將該文件中的json格式數(shù)據(jù)拷貝到下面代碼中相應(yīng)的位置(或者你也可以從文件流中讀取省市信息到字符串中,然后進(jìn)行處理,這里不贅述):
<?php/** author:農(nóng)夫莊園* website:* url:/p/5543.html*///json格式的地區(qū)字符串$area = <<<AREA這里插入json格式省市信息AREA;//將json格式的地區(qū)字符串轉(zhuǎn)化為數(shù)組,不加參數(shù)true則會轉(zhuǎn)化為對象$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’); //將相應(yīng)位置替換成你的數(shù)據(jù)庫對應(yīng)信息//開啟事務(wù)支持$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 ’|---市/區(qū)/自治州:’.$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.’失敗!’;//如果插入失敗執(zhí)行回滾操作$pdo->rollBack();$pdo=null;return; endif;} }else{echo '插入省份'.$province.'失敗!';//如果插入失敗執(zhí)行回滾操作$pdo->rollBack();$pdo=null;return; }endforeach;//如果所有數(shù)據(jù)插入成功執(zhí)行提交操作$pdo->commit();$pdo = null;?>
至此,執(zhí)行上述代碼,就可以將省市信息插入你的數(shù)據(jù)庫了。
相關(guān)文章:
1. PHP設(shè)計(jì)模式(四)原型模式Prototype實(shí)例詳解【創(chuàng)建型】2. SpringBoot 開發(fā)提速神器 Lombok+MybatisPlus+SwaggerUI3. python 爬取嗶哩嗶哩up主信息和投稿視頻4. Java向Runnable線程傳遞參數(shù)方法實(shí)例解析5. Python編寫nmap掃描工具6. PHP擴(kuò)展之APC——Alternative PHP Cache(可選PHP緩存)7. Java 基于UDP協(xié)議實(shí)現(xiàn)消息發(fā)送8. Android里巧妙實(shí)現(xiàn)緩存9. php5.6不能擴(kuò)展redis.so的解決方法10. 10個提供免費(fèi)PHP腳本下載的網(wǎng)站
