PHP將JSON格式省市(區)二級數據插入數據庫
在網站開發過程中,很多情況下都要用到省市(區)二級聯動下拉菜單,比如地址信息,以及天氣等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;?>
至此,執行上述代碼,就可以將省市信息插入你的數據庫了。
相關文章:
