本帖最后由 xytianshiwx 于 2013-12-08 10:09:44 编辑
|>|=)/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 指令的每一节都是有特定标识的
