我的数据结构是如下代码框所述,描述的是病人入院治疗的信息,但是还要记录每个病人根据病况在不同时间点用药和治疗状况的信息,而且每个人的病况不一样,用药次数不确定,但是用药和治疗是需要登记的,就相当于一个表中嵌套着另外一个表,我试图使用两个表来记录信息,可是有很多缺陷,最后创建了records字段用数组来记录信息,可是不知道代码该怎么写,拜求高人CREATE TABLE `patient` (
  `id` int(10) NOT NULL auto_increment,
  `name` varchar(12) NOT NULL,
  `sex` int(6) default NULL,
  `age` int(12) default NULL,
  `cdate` date default NULL,
  `records` text,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 9216 kB';

解决方案 »

  1.   

    既然你把细节都打包放入 records 中了,那么插入和浏览都不是什么大问题。检索和统计有一定的难度,不过似乎没有必要做入院登记:
    mysql_query("insert into patient (name,sex,age,cdate,records) values ('$name',$sex,$age,now(),'')");
    $id = mysql_insert_id(); //入院号用药和治疗登记:
    $id = $_POST['入院号'];
    $s = json_encode($POST);
    mysql_query("update patient set records=concat(records,',','$s') where id=$id");读取
    $rs = mysql_query("select * from patient");
    $r = mysql_fetch_assoc($rs);
    $ar = json_decode('[' . substr($r['records'], 1) . ']');//还原数据到数组
      

  2.   

    最好还是分表吧 表与表之间弄个关系字段关联起来
    字段要存数组的话 存入前
    1.用json_encode()打包成json字符串格式存
    2.用serialize() 打包成serialize字符串格式存
    $array = Array("name"=>"Danny","age"=>"20");
    echo "serialize格式:".serialize($array);
    echo "<br/>";
    echo "json格式:".json_encode($array);
    这两个方法,个人推荐用第一个,其他语言对json格式的支持比较好,而且json打包后字符串比较短。
    打包成字符串之后,存入你的records字段就可以了,读出来的时候解压一下即可变回数组
      

  3.   

    将用药信息的数据   serialize( $dragInfoAr ); records  取出来时  unserialize($row->records);
    或者用楼上的 json_encode 和 json_decode
    再或者自己写编码和解码规则,总之 能把数组转成string 保存,取出后能还原成 array 就ok了。
    我个人偏好用 serialize