我一般这样建表:
create table unit (uid int auto_increment,
uname varchar(32),
ulevel int,
parentid int,
PRIMARY KEY uid
)
uid是主键,自动编号,uname是省市区县乡镇的名称,ulevel为级别(可以规定省为1、市为2、……),parentid为上级id,省的上级为0,市的上级为对应的省,……
require 'city.php'
// 连接数据库(PDO)
$pdo=new PDO('mysql:host=localhostdbname=city','root','root')
$pdo->exec('set names utf8')
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC)
// 实例化城市类
$c=new city()
$result=$c->mycity()
$city_id = 0
foreach ($result as $k=>$value) {
if(count($value) == count($value,1)){
$sql="insert into city_province (province) value ('{$value['province_name']}')"
$smt=$pdo->prepare($sql)
$smt->execute()
}else{
$sql11="insert into city_province (province) value ('{$value['province_name']}')"
$smt11=$pdo->prepare($sql11)
$smt11->execute()
foreach ($value['city'] as $v=>$value1) {
$sql2="insert into city_name (name,province_id) values ('{$value1['city_name']}','{$k}')"
$smt2=$pdo->prepare($sql2)
$smt2->execute()
$city_id += 1
echo $city_id.'<br>'
if(!empty($value1['area'])){
foreach ($value1['area'] as $valu1e2) {
$sql3="insert into city_area (area,city_id) values ('{$valu1e2}','{$city_id}')"
$smt3=$pdo->prepare($sql3)
$smt3->execute()
}
}
}
}
}
城市类太大了,发不了。
我是把省、市、地区分别存在三个数据表中(我是新手,刚自己写的)
就是数据库表的一对多的问题,你的第二个表(商家表)的areaID字段设置成外键,指向第一张表(地区表)的主键即可。即是说,你的第二个表(商家表)里可以有多项对应第一张表里的一项,你说的情况就可以两个小车店有两条记录,不管你东南、西北,就往第二张表里添加记录就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)