在有些表单中,字段很多很多,字段类型、长度、格式等都有可能不一样,一个一个的去判断有时候会很麻烦,还不方便升级,来看看我自己整理的方法吧,在原生php中用的,简单的系统中用得到,如果用框架来弄的话不少框架都有自己的解决方案,来看看我的//需要的参数
$canshu=array(
//参数名 错误值,错误提示信息
'id'=>array('','参数错误'),
'xingming'=>array('','请输入姓名'),
'dianhua'=>array('','请提供电话'),
'status'=>array('','请选择正确的状态'),
'remark'=>array('','')
);
//得到post参数,多余的参数会被过滤掉
foreach($_POST as $kp=>$vp){
if(array_key_exists($kp,$canshu)){
$canshu[$kp][0]=htmlspecialchars($vp,ENT_QUOTES);
}
}
//比较必要参数及记录对应值
$sql_keyvalue="";
$tmp_status=array(0,1,2,3);//可选值校验
foreach($canshu as $k2=>$v2){
if($k2=='id'){
//对id进行判断,如:是否正整数,记录是否存在等等
}
else if($k2=='status'){
if(!in_array($v2[0],$tmp_status)){
//ShowMsg($v2[1]);//提示错误信息,
}
}else{
//无需核验的参数
}
$sql_keyvalue.=$sql_keyvalue==""?$k2."='$v2[0]'":','.$k2."='$v2[0]'";
}
//修改记录的sql语句
$sql='update table set '.$sql_keyvalue.' where id='.$canshu['id'][0];
//添加记录的sql语句也可以拼接出来
此处只是进行了是否为空的判断,最好的方法是在数组中加入一个正则表达式,
例如id字段'id'=>array('0','^[0-9]{1,30}$','参数错误')
通过表达式来验证,比如id、电话、邮箱、用户名等都可以用正则表达是来验证,每个参数写上自己的正则就行,
附上常用的正则表达式array(
array('value'=>'','text'=>'请选择验证方式'),
array('value'=>'^[\u4e00-\u9fa5\a-zA-Z0-9]+$','text'=>'英文数字汉字'),
array('value'=>'^[A-Za-z]+$','text'=>'英文大小写字符'),
array('value'=>'^[1-9]\d*|0$','text'=>'0或正整数'),
array('value'=>'^[0-9]{1,30}$','text'=>'正整数'),
array('value'=>'^[-\+]?\d+(\.\d+)?$','text'=>'小数'),
array('value'=>'\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*','text'=>'邮箱'),
array('value'=>'^13[0-9]{9}$|^15[0-9]{9}$|^18[0-9]{9}$','text'=>'手机'),
)