백엔드 개발 PHP 튜토리얼 ThinkPHP--SQL 쿼리 문

ThinkPHP--SQL 쿼리 문

Aug 08, 2016 am 09:31 AM
array gt map user where

1. 쿼리 방법

ThinkPHP는 문자열 조건 쿼리, 인덱스 배열 조건 쿼리, 개체 조건 쿼리의 세 가지 기본 쿼리 방법을 제공합니다. 대부분의 경우 인덱스 배열과 객체를 쿼리 조건으로 사용하는 것이 더 안전하기 때문에 권장됩니다
1. 문자열을 조건 쿼리로 사용
//Strings를 조건 쿼리로
$user = M( 'User ');
var_dump($user->where('id=1 AND user="짱구는짱"')->select());
//최종 생성된 SQL 문
SELECT * FROM `think_user` WHERE ( id=1 AND user="Crayon Shin-Chan" )
PS: 여기서 쿼리 방법은 조건, 여러 조건 및 AND와 같은 커넥터만 포함하면 됩니다.
SQL 일관성 작업에 대해 자세히 알아 보겠습니다.
2. 인덱스 배열을 쿼리 조건으로 사용
//인덱스 배열을 조건 쿼리로 사용
$user = M('User');
$condition['id'] = 1;
$condition['user'] = '크레용신짱';
var_dump($user->where($condition)->select());
//최종 생성된 SQL 문
SELECT * FROM `think_user` WHERE ( `id` = 1 ) AND ( `user` = 'Crayon Little
New' )
PS: 인덱스 배열 쿼리의 기본 논리 관계는 AND입니다. OR로 전환하려면 _logic을 사용하여 쿼리 논리를 정의할 수 있습니다.
위 코드를 기반으로 다음 줄을 추가합니다.
$condition['_logic'] = 'OR'; //기본 AND를 OR로 변경
3.객체 메서드를 사용하여 쿼리합니다.
//조건으로 개체 쿼리
$user = M('User');
$condition = new stdClass();
$condition->id = 1;
$condition-> ;user = '짱구는 못말려';
var_dump($user->where($condition)->select());
//최종 생성된 SQL 문
SELECT * FROM `think_user ` WHERE ( ` id` = 1 ) AND ( `user` = 'Crayon Little
New' )
PS: stdClass 클래스는 PHP에 내장된 클래스이며 여기서는 빈 클래스로 이해될 수 있습니다. 이는 조건부
필드가 stdClass 클래스에 멤버로 저장된다는 의미로 이해할 수 있습니다. 여기서 ''는 네임스페이스를 루트 디렉터리로 설정하는 것입니다. 그렇지 않으면
이 클래스는 현재 디렉터리에서 찾을 수 없습니다. 개체 및 배열 쿼리를 사용하면 효과가 동일하며 서로 바뀔 수 있습니다. 대부분의 경우
ThinkPHP에서는 보다 효율적으로 배열 형식을 사용할 것을 권장합니다.

2. 표현식 쿼리
보다 큼, 같음, 작음과 같은 SQL 쿼리와 같이 퍼지 판단이 필요한 쿼리에는 테이블

표현식 쿼리 방법을 사용할 수 있습니다.

쿼리 표현식 형식: $map['필드 이름'] = array('표현식','쿼리 조건');
표현식 쿼리 테이블
표현식 의미
EQ는 (= )
NEQ는 (<>)와 같지 않습니다
GT는 다음보다 큼(>)
EGT는 다음보다 크거나 같습니다(>=)
LT는 다음보다 작습니다(<).
ELT는 (< ;=)보다 작거나 같습니다.
[NOT]LIKE 퍼지 쿼리
[NOT] BETWEEN(아님)간격 쿼리
[NOT] IN(아님)IN 쿼리
EXP 표현식 쿼리, SQL 구문 지원
PS: 표현식은 대소문자를 구분하지 않습니다.
//EQ: 같음 (=)
$map['id'] = array('eq', 1); //여기서 id=1
//NEQ: 같지 않음( <>)
$map['id'] = array('neq', 1); //id는 1입니다
//GT: 보다 큼(>)
$map[ 'id'] = array('gt', 1); //id>1
//EGT: (>=)
$map['id' ] = array('egt ', 1); //id>=1
//LT: 보다 작음 (<)
$map['id'] = array('lt', 1 ); //id<1
//ELT: (<=)
$map['id'] = array('elt', 1)보다 작거나 같음 id<=1
//[ NOT]LIKE: 퍼지 쿼리
$map['user'] = array('like', '%작은%') //여기는 %작은%
//[NOT]LIKE: 퍼지 쿼리
$map['user'] = array('notlike', '%작은%') //여기서 %작은%
//[NOT ]LIKE: 퍼지 쿼리의 배열 방법
$map['user'] = array('like', array('%작은%', '% Wax%'), 'AND');
// 생성된 SQL
SELECT * FROM ` think_user` WHERE ( (`user` LIKE '%작은%' AND `user`
LIKE '%wax%') )
//[NOT] BETWEEN: 간격 쿼리
$map['id' ] = array('between','1,3');
//'id'는 '1'과 '2' 사이에 있습니다.
//위와 동일 및 이에 상응하는
$map['id' ] = array('between',array('1','3'));
//[NOT] BETWEEN: 간격 쿼리
$map[' id'] = array('not between', '1,3');
//여기서 `id`는 '1'과 '2' 사이가 아닙니다
//[NOT] IN: 간격 쿼리
$map['id'] = 배열 ​​('in','1,2,4');
//`id`는 IN ('1','2','4')
//[NOT] IN: 간격 쿼리
$map['id'] = array('not in','1,2,4');
//`id`가 NOT IN인 곳 ('1','2','4')
//EXP: 사용자 정의
$map['id'] = array('exp','in (1,2,4)');
//where is `id` NOT IN ('1','2','4')
PS: exp를 사용하여 두 번째 매개변수에 where 문을 사용자 정의하고 직접 작성합니다
//EXP : OR 문을 추가하도록 사용자 지정
$map['id'] = array('exp', '=1');
$map['user'] = array('exp', '=" 크레용신짱"');
$map['_logic'] = 'OR';
//WHERE is ( (`id` =1) ) OR ( (`user` =" 크레용신- 짱") )

3. 빠른 쿼리
단축 쿼리 방식은 다중 필드 쿼리를 작성하는 단순화된 방법으로, 여러 필드를 '|'로 구분하여 OR을 나타내고, '&'
를 사용하여 여러 필드를 구분하여 AND를 나타냅니다.
1. 다른 필드에 동일한 쿼리 조건
//동일한 쿼리 조건 사용
$user = M('User');
$map['user|eemail'] = 'a' ; / /'|'는 '&'로 대체되어 AND
var_dump($user->where($map)->select());
2. 🎜>// 다른 쿼리 조건 사용
$user = M('User');
$map['id&user'] = array(1,'크레용신짱','_multi'=>true );
var_dump($user->where($map)->select());
PS: id를 1로, user를 '짱구짱'으로 만들려면 '_multi'를 true로 설정하세요. ', 그렇지 않으면
ID가 1에 해당하고 '짱구는 신짱'에도 해당하는 상황이 발생하게 됩니다. 또한 이 설정은 배열의 끝에 배치되어야 합니다.
//빠른 쿼리와 결합된 표현식 지원
$user = M('User');
$map['id&user'] = array(array('gt', 0),'Crayon Little New ','_multi'=>true);
var_dump($user->where($map)->select());

IV. 간격 쿼리

ThinkPHP는 특정 필드에 대한 간격 쿼리를 지원합니다.

//간격 쿼리
$user = M('User');
$map['id'] = array(array('gt', 1), array('lt', 4) );
var_dump($user->where($map)->select());
//세 번째 매개변수는 논리 OR
$user = M('User') $map['id'] = array(array('gt', 1), array('lt', 4), 'OR');
var_dump($user->where($map ) ->select());

5. 결합 쿼리
결합 쿼리는 인덱스 배열 쿼리 방식을 기반으로 인덱스 배열을 사용하므로 문자열 쿼리(_string), 복합

복합 쿼리(_complex), 요청 문자열 쿼리(_query)를 추가한 쿼리입니다. , 중복된 항목을 덮어쓰게 됩니다.

//문자열 쿼리(_string)
$user = M('User');
$map['id'] = array('eq', 1);
$map[ ' _string'] ='user="크레용신찬" AND email="xiaoxin@163.com"';
var_dump($user->where($map)->select());
//문자열 쿼리 요청(_query)
$user = M('User');
$map['id'] = array('eq', 1);
$map[' _query '] ='user=크레용신찬&email=xiaoxin@163.com&_logic=OR';
var_dump($user->where($map)->select());
PS: 이 첫 번째 방법은 따옴표가 필요 없는 URL 방식입니다.
//복잡한 쿼리(_complex)
$user = M('User');
$where['user'] = array('like', '%작은%');
$where['id'] = 1;
$where['_logic'] = 'OR';
$map['_complex'] = $where;
$map['id'] = 3;
$map['_logic'] = 'OR';
var_dump($user->where($map)->select());
PS: 복합 쿼리를 구성할 수 있습니다. more 복잡한 쿼리의 경우 id=1 또는 id=3을 구현할 수 있습니다.

6. 통계 쿼리
ThinkPHP는 데이터의 통계 쿼리를 위한 몇 가지 방법을 제공합니다.

//총 데이터 항목 수

$user = M('User');
var_dump($user->count());
//총 필드 수, NULL 발생 통계 없음
$user = M('User');
var_dump($user->count('email'));
//최대값
$user = M('User ');
var_dump($user->max('id'));
//최소값
$user = M('User');
var_dump($user-> ;min('id'));
//평균값
$user = M('User');
var_dump($user->avg('id'));
//합계 찾기
$user = M('User');
var_dump($user->sum('id'));

7. 동적 쿼리
ThinkPHP는 PHP5 언어의 기능을 이용해 동적 쿼리를 구현합니다.

1.getBy 동적 쿼리

//email=xiaoin@163.com의 데이터 찾기
$user = M('User');
var_dump($user->getByemail(' xiaoxin @163.com'));
2.getFieldBy 동적 쿼리
//user를 통해 해당 id 값 가져오기
$user = M('User');
var_dump($user- > ;getFieldByUser('Luffy', 'id'));

8. SQL 쿼리
ThinkPHP는 기본 SQL 쿼리를 지원합니다.

1.쿼리 읽기

//쿼리 결과 집합, 분산 읽기 및 쓰기 분리를 사용하는 경우 항상 읽기 서버에서 실행됩니다.
$user = M('User');
var_dump($user ->query('SELECT * FROM think_user'));
2.execute write
//업데이트 및 쓰기, 분산 읽기-쓰기 분리를 사용하는 경우 항상 다음에서 실행됩니다. 쓰기 서버
$ user = M('User');
var_dump($user->execute('UPDATE think_user set user="Crayon Daxin" WHERE
id=1'));
PS: 하위로 인해 쿼리는 일관성 있는 작업을 많이 사용합니다. 이에 대해서는 일관성 있는 작업에서 설명하겠습니다.

위 내용은 ThinkPHP-SQL 쿼리문을 관련 내용과 함께 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

springboot는 yml 파일의 목록, 배열, 지도 컬렉션 및 개체를 어떻게 읽나요? springboot는 yml 파일의 목록, 배열, 지도 컬렉션 및 개체를 어떻게 읽나요? May 11, 2023 am 10:46 AM

application.yml은 목록 컬렉션을 정의합니다. 첫 번째 방법은 @ConfigurationProperties 주석을 사용하여 목록 컬렉션 유형:code:status:-200-300-400-500의 모든 값을 얻는 것입니다. 여기서 주목해야 할 점은 목록 Collection을 정의하고 먼저 구성 클래스 Bean을 정의한 다음 @ConfigurationProperties 주석을 사용하여 목록 컬렉션 값을 얻는다는 것입니다. @Component는 엔티티 클래스를 Spring 관리 @ConfigurationPropertie에 넘겨줍니다.

화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? 화웨이 GT3 Pro와 GT4의 차이점은 무엇입니까? Dec 29, 2023 pm 02:27 PM

많은 사용자들이 스마트 시계를 선택할 때 Huawei 브랜드를 선택하게 됩니다. 그 중 Huawei GT3pro와 GT4가 가장 인기 있는 선택입니다. 두 제품의 차이점을 궁금해하는 사용자가 많습니다. Huawei GT3pro와 GT4의 차이점은 무엇입니까? 1. 외관 GT4: 46mm와 41mm, 재질은 유리 거울 + 스테인레스 스틸 본체 + 고해상도 섬유 후면 쉘입니다. GT3pro: 46.6mm 및 42.9mm, 재질은 사파이어 유리 + 티타늄 본체/세라믹 본체 + 세라믹 백 쉘입니다. 2. 건강한 GT4: 최신 Huawei Truseen5.5+ 알고리즘을 사용하면 결과가 더 정확해집니다. GT3pro: ECG 심전도, 혈관 및 안전성 추가

Java에서 만료 시간 맵을 설정하는 방법 Java에서 만료 시간 맵을 설정하는 방법 May 04, 2023 am 10:13 AM

1. 기술적 배경 실제 프로젝트 개발에서는 시스템의 가용성과 견고성을 향상시키기 위해 캐싱 미들웨어(예: redis, MemCache 등)를 자주 사용합니다. 하지만 프로젝트가 상대적으로 단순하다면 캐싱을 사용하기 위해 시스템의 복잡성을 높이기 위해 Redis와 같은 미들웨어를 특별히 도입할 필요가 없는 경우가 많습니다. 그렇다면 Java 자체에는 유용한 경량 캐싱 구성 요소가 있습니까? 물론 대답은 '그렇다'이며, 방법은 여러 가지가 있습니다. 일반적인 솔루션에는 ExpiringMap, LoadingCache 및 HashMap 기반 패키징이 포함됩니다. 2. 오래된 삭제 전략, 핫스팟 데이터 워밍업 등 캐시의 공통 기능을 구현하기 위한 기술적 효과 3. ExpiringMap3.

수정: Windows 11에서 캡처 도구가 작동하지 않음 수정: Windows 11에서 캡처 도구가 작동하지 않음 Aug 24, 2023 am 09:48 AM

Windows 11에서 캡처 도구가 작동하지 않는 이유 문제의 근본 원인을 이해하면 올바른 솔루션을 찾는 데 도움이 될 수 있습니다. 캡처 도구가 제대로 작동하지 않는 주요 이유는 다음과 같습니다. 초점 도우미가 켜져 있습니다. 이렇게 하면 캡처 도구가 열리지 않습니다. 손상된 응용 프로그램: 캡처 도구가 실행 시 충돌하는 경우 응용 프로그램이 손상되었을 수 있습니다. 오래된 그래픽 드라이버: 호환되지 않는 드라이버가 캡처 도구를 방해할 수 있습니다. 다른 응용 프로그램의 간섭: 실행 중인 다른 응용 프로그램이 캡처 도구와 충돌할 수 있습니다. 인증서가 만료되었습니다. 업그레이드 프로세스 중 오류로 인해 이 문제가 발생할 수 있습니다. 이 문제는 대부분의 사용자에게 적합하며 특별한 기술 지식이 필요하지 않습니다. 1. Windows 및 Microsoft Store 앱 업데이트

Java에서 Map에 대한 스레드 안전성을 구현하는 방법은 무엇입니까? Java에서 Map에 대한 스레드 안전성을 구현하는 방법은 무엇입니까? Apr 19, 2023 pm 07:52 PM

방법 1. HashtableMapashtable=newHashtable();을 사용하세요. 이것이 모두가 가장 먼저 생각하는 것인데, 왜 스레드로부터 안전할까요? 그런 다음 소스 코드를 살펴보면 put, get 및 containKey와 같이 일반적으로 사용되는 메서드가 모두 동기식이므로 스레드로부터 안전한 publicsynchronizedbooleancontainsKey(Objectkey){Entrytab[]=table;inthash=key임을 알 수 있습니다. hashCode( );intindex=(hash&0x7FFFFFFF)%tab.leng

Java에서 객체를 맵으로 변환하는 방법 - BeanMap을 사용하여 Java에서 객체를 맵으로 변환하는 방법 - BeanMap을 사용하여 May 08, 2023 pm 03:49 PM

javabeans와 map을 변환하는 방법에는 여러 가지가 있습니다. 1. ObjectMapper를 통해 Bean을 json으로 변환한 다음 json을 map으로 변환합니다. 그러나 이 방법은 테스트 후에 10,000개의 Bean이 루프로 변환되었습니다. 12초 걸립니다! ! ! 2. Java Reflection을 통해 Bean 클래스의 속성과 값을 얻은 다음 이를 맵에 해당하는 키-값 쌍으로 변환하는 방법이 두 번째로 좋지만 조금 더 번거롭습니다. 3. 클래스의 net.sf.cglib.beans.BeanMap 메소드를 통해 이 메소드는 매우 효율적입니다. 두 번째 메소드와 차이점은 캐시를 사용하기 때문에 첫 번째 Bean을 생성할 때 초기화해야 한다는 것입니다. 시간.

Nginx 서버에서 맵 모듈을 구성하고 사용하는 방법 Nginx 서버에서 맵 모듈을 구성하고 사용하는 방법 May 21, 2023 pm 05:14 PM

맵 명령은 ngx_http_map_module 모듈에서 제공됩니다. 기본적으로 nginx는 인위적으로 --without-http_map_module을 사용하지 않는 한 이 모듈을 로드합니다. ngx_http_map_module 모듈은 값이 다른 변수의 값과 연관된 변수를 생성할 수 있습니다. 여러 값을 여러 다른 값으로 분류하거나 동시에 매핑하고 변수에 저장하는 것을 허용합니다. 맵 지시어는 변수를 생성하는 데 사용되지만 변수가 허용되는 경우에만 뷰 매핑 작업을 수행합니다. 변수를 참조하지 않는 요청을 처리하는 경우 이 모듈에는 성능 단점이 없습니다. 1.ngx_http_map_module 모듈 명령어 설명 맵 구문

iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 iPhone에서 App Store 오류에 연결할 수 없는 문제를 해결하는 방법 Jul 29, 2023 am 08:22 AM

1부: 초기 문제 해결 단계 Apple 시스템 상태 확인: 복잡한 솔루션을 살펴보기 전에 기본 사항부터 시작해 보겠습니다. 문제는 귀하의 기기에 있는 것이 아닐 수도 있습니다. Apple 서버가 다운되었을 수도 있습니다. Apple의 시스템 상태 페이지를 방문하여 AppStore가 제대로 작동하는지 확인하세요. 문제가 있는 경우 Apple이 문제를 해결하기를 기다리는 것뿐입니다. 인터넷 연결 확인: "AppStore에 연결할 수 없음" 문제는 때때로 연결 불량으로 인해 발생할 수 있으므로 인터넷 연결이 안정적인지 확인하십시오. Wi-Fi와 모바일 데이터 간을 전환하거나 네트워크 설정을 재설정해 보세요(일반 > 재설정 > 네트워크 설정 재설정 > 설정). iOS 버전을 업데이트하세요.

See all articles