개인적인 이해: 우아한 프로그래밍이란 커피를 마시고, 키보드를 만지고, 비즈니스에 대해 생각하는 것입니다. 우아한 코드의 정의는 다음과 같습니다. 1. 작은따옴표와 큰따옴표를 최대한 적게 사용하세요. ; 2. 중첩 없음 3. 이름은 모두 영어와 같습니다. 5. , 바람직하게는 네트워크 관계는 거의 사용되지 않습니다.
다음은 SQL 쿼리의 일관된 작업을 구현하는 방법입니다. 지침을 제공하십시오.
- /**
- * DB 일관성 연산, SQL 조건부 구성
- * 보낸 사람: EQPHP FrameWork
- * 작성자: art_youth
- * E-mail: 258122391@qq.com
- * Pub 데이터: 2012-11- 09
- */
- 클래스 쿼리{
- public $sql=' ';
- 공개 $option=array();
- static $keyword=array('select','from','where','group','having','order','limit') ;
- //初始化查询参数
- function __construct($table,$prefix=''){
- $this->option['from']=$prefix.$ table;
- }
-
-
- //构造参数
- function __call($method,$param){
- if (in_array($method,self::$keyword)) {
- $this->option[$method]=$param[0];
- return $this;
- }
- }
-
-
- //输流查询结果
- 함수 출력($mode='sql',$rs_count=0,$now_page=1,$page_size=20){
- $this->sql='';
- foreach (self::$ 키워드는 $key) {
- $value=($key == 'group' || $key == 'order') ? $키.' by' : $key;
-
- if ($key === 'where' && is_array($this->option['where'])) {
- $this->option[' where']=self::condition($this->option['where']);
- }
-
- if (isset($this->option[$key]) && Trim( $this->option[$key])) {
- $this->sql.=' '.$value.' '.trim($this->option[$key]);
- }
-
- unset($this->option[$key]);
- }
- $this- >sql=trim($this->sql);
-
- 스위치($mode){
- case 'rs':
- return db::rs($this->sql) ;
- 케이스 '목록':
- return db::rs_list($this->sql);
- 케이스 '페이지':
- return db::page_list($this->sql, $rs_count,$now_page,$page_size);
- 기본값:
- return $this->sql;
- }
- }
-
-
- //构造sql查询条件
- 정적 함수 조건($data){
- //处理逻辑连接符
- $logic=' and ';
- if (isset($data['logic'])) {
- $ logic=' '.$data['logic'].' ';
- unset($data['logic']);
- }
-
- //处理字符串(本生sql)
- if (isset($data['query'] )) {
- $condition[]='('.$data['query'].')';
- unset($data['query']);
- }
-
- //处理条件数据
- foreach ($data as $key=>$value) {
- $condition[]='('.self::parse_expression($key,$value).')' ;
- }
-
- return implode($logic,$condition);
- }
-
-
- //解析表达式
- 비공개 정적 함수 구문 분석($key, $value){
- if (is_numeric($value)) return $key.'='.$value;
- if (is_string($value)) return $key.'="'.$value.' "';
-
- if (is_array($value)) {
- //基本条件查询
- if (preg_match('/^(eq|neq|gt|egt|lt|elt)$ /i',$value[0])) {
- is_string($value[1]) && $value[1]='"'.$value[1].'"';
- $operator= array('eq'=>'=','neq'=>'<>','gt'=>'>','egt'=>'>=','lt '=>'<','elt'=>'<=',);
- return $key.$operator[$value[0]].$value[1];
- }
- //in范围查找
- if (in_array($value[0],array('in','not in'))) {
- is_array($value[1]) && $value[1]=implode(',',$value[1]);
- $key를 반환합니다.' '.$value[0].'('.$value[1].')';
- }
- //between区间查找
- if (in_array($value[0], array('사이','사이가 아님'))) {
- $param=is_string($value[1]) ? 폭발(',',$value[1]) : $value[1];
- $key를 반환합니다.' '.$값[0].' '.$param[0].' and '.$param[1];
- }
- //like模糊匹配
- if (in_array($value[0],array('like','not like'))) {
- if (is_array($value[1])) {
- $buffer=array();
- foreach ($value[1] as $param) {
- $buffer[]=$ 열쇠.' '.$값[0].' "'.$param.'"';
- }
- $logic=isset($value[2]) ? ' '.$값[2].' ' : ' 또는 ';
- return implode($logic,$buffer);
- }
- if (strpos($key,'|') !== false) {
- $ buffer=array();
- foreach (explode('|',$key) as $field) {
- $buffer[]='('.$field.' '.$value[0].' "'.$value[1].'")';
- }
- return implode(' 또는 ',$buffer);
- }
- if (strpos($key,'&') !== false) {
- $buffer=array();
- foreach (explode('&',$key) as $field ) {
- $buffer[]='('.$field.' '.$value[0].' "'.$value[1].'")';
- }
- 반환 내파 (' 및 ',$buffer);
- }
- $key를 반환합니다.' '.$값[0].' "'.$value[1].'"';
- }
- //数school区间查询(1,9)/[2,3)
- if ($value[0] = == '범위') {
- $logic=isset($value[2]) ? ' '.$값[2].' ' : ' && ';
- $operator=array('('=>'>','['=>'>=',')'=>'<','] '=>'<=');
- preg_match('/^((|[)(.*),(.*)()|])$/',$value[1],$param );
- $result='';
- isset($param[2]) && $result.=$key.$operator[$param[1]].$param[2];
- isset ($param[4]) && $result.=$logic.$key.$operator[$param[4]].$param[3];
- return $result;
- }
- return '';
- }
- }
- //资源回收
- function __destruct(){
- unset($this->option,$this-> ;sql);
- }
-
-
- }
复代码
|