可以在数据库再加一个字段比如Atype表示A字段当前的类型,A字段设为varchar型(如果大的话设为text或blob),然后让用户填写表格,把Atype的值连同其他insert进数据库
比如纪录
id  A   Atype
1   9    int
2   3.4  float
3  180-23 jingdu
然后在程序里根据Atype的值来对A字段的值加以判断
比如:
function panduan($atype,$a){
if($atype=="int")
return is_int($a);
if($atype=="float")
return is_float($a);
if($atype=="jingdu")
return eregi("^1[2-6][0-9]{2}$",$a);
}

解决方案 »

  1.   

    用switch语句进行切换,用正则表达式进行类型判断。
      

  2.   

    谢谢两位。问题没有结束啊。--想想很简单,但是作起来比较麻烦。我新建了个描述其它表字段限至的表:XML结构如下
    像int,min,max..都好办。但是在对比较复杂的情况:如
    经度(经度、纬度在填写时,格式一定要统一规范,经度如105-26-33.7 ;经度的“度位”为必须为3位数值;分位必须为2为数值并且小于60;秒位也必2为数值并且小于60,还要要求精确到10分位,不足时以0补齐;间隔符也必须统一。)
    就不好办了。于是我加了个reg的字段,设置为1的时候必须重新编一个tbl_name_col_name命名的函数去验证.原来很想把函数的内容就写在reg字段里边,但是不知道怎么把字段内容弄出来在PHP里边起作用 ( 实际作真很麻烦 )
    如上面的经度要求,用正则表达式怎么写啊?<sys_col_field>
            <sys_col_field_id>5</sys_col_field_id>
            <col>site_name</col>
            <tbl>base_site</tbl>
            <int>0</int>
            <min>0</min>
            <max>0</max>
            <length>0</length>
            <str>0</str>
            <float>0</float>
            <reg>0</reg>
            <need>1</need>
        </sys_col_field>