PHP if. elseif.else 有關問題

來源:互聯網
上載者:User
PHP if.. elseif...else 問題
本帖最後由 xytianshiwx 於 2013-12-08 10:09:44 編輯

    
$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 指令的每一節都是有特定標識的
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.