首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

PHP if. elseif.else 有关问题

2013-12-09 
PHP if.. elseif...else 问题本帖最后由 xytianshiwx 于 2013-12-08 10:09:44 编辑?php $field_funcCOU

PHP if.. elseif...else 问题
本帖最后由 xytianshiwx 于 2013-12-08 10:09:44 编辑

    
<?php
 $field_func="COUNT|AVG|FIRST|LAST|MAX|MIN|SUM|TOP";
 $where_field="Where|or|xor|and|in";
 $param="name";
 $sql_param_list=array();
 if(false!==strpos($param,",")){//判断是否存在“,”
         $sql_param_list["field"] = $param;
     }else{
 if(preg_match("/\b(".strtolower($field_func).")\b\((\*|[a-zA-Z_`])+\)/i", $param)){
            $sql_param_list["field"] =$param;
         }elseif(preg_match("/\b(".$where_field.")\b/i", $param)||preg_match("/(>|>|=)/i", $param)){//判断where
         $sql_param_list["where"] =$param;
         
         }elseif(preg_match("/\b(order|limit|group|)\b/i", $param,$param_name)){//判断order|limit|group
              switch ($param_name[0]){
                case "order" : $sql_param_list["order"] =$param;
                break;
                case "limit" : $sql_param_list["limit"] =$param;
                break;
                case "group" : $sql_param_list["group"] =$param;
                break;
               
              }
         }else{
            $sql_param_list["field"] =$param;
         }
     }    
     print_r($sql_param_list);



 $param 没有赋值个$sql_param_list["field"]??
逻辑错误还是其他错误,请高手指点指点!!!
[解决办法]
Array
(
    [where] => name>10
)
为什么  $param 要赋值给 $sql_param_list["field"] ?
你的 $param 是 "name>10" 里面并没有“,”
只有 if(preg_match("/\b(".$where_field.")\b/i", $param)
[解决办法]
preg_match("/(>
[解决办法]
>
[解决办法]
=)/i", $param)){//
分支能进入
[解决办法]
 }elseif(preg_match("/\b(order
[解决办法]
limit
[解决办法]
group
[解决办法]
)\b/i", $param,$param_name)){//判断order
[解决办法]
limit
[解决办法]
group
==> "/\b(order
[解决办法]
limit
[解决办法]
group)\b/i",  //正则多了个或


[解决办法]
if(false!==strpos($param,",")){//判断是否存在“,”
那就更不对了,单个名字不会有“,”的

按照 SQL 指令的文法范式
你应该逐次读取以空格符分隔的子串,判断它属于哪个语法成分
并且 SQL 指令的每一节都是有特定标识的

热点排行