场景:有很多网站的表里面只会存在一条记录,如网站配置表,服务器发送邮件配置表等
设计优点:添加扩展属性时不需要修过数据库表结构,只需要添加一条属性记录即可,保存时做sqlupdate操作
CREATE TABLE `siteconf` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`code` varchar(40) NOT NULL DEFAULT '' COMMENT '表单元素名称',
`value` varchar(200) DEFAULT NULL COMMENT '表单值',
PRIMARY KEY (`id`),
UNIQUE KEY `form_name` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
记录示例
提取记录
select if(code='name', value, '') name,if(code='logo', value, '') logo,if(code='icp', value, '') icp from siteconf
public function getSiteInfo(){
$sql = "select * from siteconf ;";
$list = $this->db->findAll($sql);
$result = array();
foreach($list as $info){
$result[$info['code']] = $info['value'];
}
return $result;
}
//保存或修过信息
public function updateSiteInfo($formData)
{
foreach ($formData as $name => $val) {
$sql = "update siteconf set value='$val' where code='{$name}'";
$this->db->execute($sql);
}
}
注意事项:code值和页面表单name一致
<input type="text" value="<?php echo $info['name']; ?>" name="name">