逃脫反引號
?有個地方有點問題,大約100行代碼那塊。那個$fields整個字符串里沒找到反引號時,再處理加入反引號。但是有可能是他的sql中,關鍵詞的字段沒加反引號,而非關鍵詞的加了反引號。這樣的話,還是逃脫了走加反引號的方法哈哈。 好比$sql = 'select `hi`, status from table '; ? 這個$fields = '`hi`,status';這個status就沒加反引號。。
?有個地方有點問題,大約100行代碼那塊。那個$fields整個字符串里沒找到反引號時,再處理加入反引號。但是有可能是他的sql中,關鍵詞的字段沒加反引號,而非關鍵詞的加了反引號。這樣的話,還是逃脫了走加反引號的方法哈哈。 好比$sql = 'select `hi`, status from table '; ? 這個$fields = '`hi`,status';這個status就沒加反引號。。
2015-11-14
舉報
2016-05-14
public?static?function?parseFilds($fields) ????{ ????????if(!is_array($fields)) ????????{ ????????????$fields?=?explode(',',$fields); ????????}else{ ????????????$fieldsStr?=?"*"; ????????} ????????array_walk($fields,array('PdoMysql','addSpecilChar')); ????????$fieldsStr=implode(',',$fields); ????????return?$fieldsStr; ????}2016-05-14
/** ?????*?sql條件格式化?abc->`abc`,tab.cloum->`tab`.`cloum` ?????*?@param?[type]?&$value?[description] ?????*/ ????public?function?addSpecilChar(&$value) ????{ ????????if($value?===?"*")?return?$value; ????????preg_match('/^\`(.*)\`$/',$value,$preg); ????????if(count($preg)>0){return?$value;}; ????????preg_match('/(.*)\.$/',$value,$preg); ????????if(count($preg)>0){return?'`'.$value.'`';}; ????????preg_match('/^\.(.*)/',$value,$preg); ????????if(count($preg)>0){return?'`'.$value.'`';}; ????????$arr?=?explode('.',$value); ????????$res?=?Array(); ????????foreach?($arr?as?$key?=>?$v)?{ ????????????if($v=='')?break; ????????????preg_match('/^\`(.*)\`$/',?$v,$preg); ????????????if(count($preg)>0){ ????????????????$res[]?=?$v; ????????????}else{ ????????????????$res[]?=?'`'.$v.'`'; ????????????} ????????} ????????$value?=?implode('.',$res); ????????$res?=?null; ????????$arr?=?null; ????????$preg?=?null; ????????return?$value; ????}我把他的升級了一下