> 백엔드 개발 > PHP 튜토리얼 > thinkPHP 데이터베이스 추가, 삭제, 수정 및 쿼리 연산 방법 예시에 대한 자세한 설명

thinkPHP 데이터베이스 추가, 삭제, 수정 및 쿼리 연산 방법 예시에 대한 자세한 설명

高洛峰
풀어 주다: 2023-03-04 18:10:01
원래의
1463명이 탐색했습니다.

본 글의 예시에서는 thinkPHP 데이터베이스를 추가, 삭제, 수정, 조회하는 작업 방법을 설명합니다. 참조용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

thinkphp는 데이터베이스의 추가, 삭제, 수정 및 쿼리를 캡슐화하여 사용하기 더 편리하게 해주지만 반드시 유연하지는 않습니다.

은 encapsulation에 사용할 수 있습니다. sql을 작성해야 sql을 실행할 수 있습니다.

1. 원본

$Model = new Model(); // 实例化一个model对象 没有对应任何数据表
$insert_sql = "INSERT INTO sh_wxuser_collection (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$Model - >query($insert_sql);
로그인 후 복사


2. 테이블에 대해 인스턴스화되었으며 여기서 테이블의 원래 이름은 sh_wxuser_collection입니다. sh는 접두사입니다.

$model = M('wxuser_collection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
로그인 후 복사


또 다른 쓰기 방식인 _는 대문자로 쓸 수 있으며 자동으로 _

$model = M('WxuserCollection'); //自动省去sh
$insert_sql = "INSERT INTO __TABLE__ (user_id,store_id,good_id,addtime) VALUES('".$user_id."','".$store_id."','".$good_id."','".$addtime."');";
$model - >query($insert_sql);
로그인 후 복사


<🎜로 변환됩니다. >

3. 캡슐화된 add 문

$model = M(&#39;WxuserCollection&#39;);
$data = array(&#39;user_id&#39; = >$user_id, &#39;store_id&#39; = >$store_id, &#39;good_id&#39; = >$good_id, &#39;addtime&#39; = >$addtime);
$model - >data($data) - >add();
로그인 후 복사


4. 캡슐화된 수정 edit 문

$model = M(&#39;WxuserCollection&#39;);
$data = array(&#39;user_id&#39; = >$user_id, &#39;store_id&#39; = >$store_id, &#39;good_id&#39; = >$good_id, &#39;addtime&#39; = >$addtime);
$model - >data($data) - >where(&#39;id=3&#39;) - >save();
로그인 후 복사


정말로 매우 편리하지만 편리함과는 별도로 가장 흥미로운 원본 SQL, 원본 SQL을 잊지 마십시오.

5.find()

$model = M(&#39;WxuserCollection&#39;);
$res1 = $model - >find(1);
$res2 = $model - >find(2);
$res3 = $model - >where(&#39;good_id=1105 AND store_id = 1 AND user_id = 20&#39;) - >find();
로그인 후 복사


find는 데이터 조각을 가져오고, find(1)는 ID가 1인 데이터를 가져오고, find(2) )는 ID가 2인 데이터를 가져옵니다. 마지막은 where 조건으로 첫 번째 데이터 조각을 가져오는 것입니다.

5.select()

$model = M(&#39;WxuserCollection&#39;);
$res = $model - >where(&#39;good_id=1105 AND store_id = 1 AND user_id = 20&#39;) - >field(&#39;id,good_id as good&#39;) - >select();
로그인 후 복사


모든 데이터를 가져옵니다. 여기서 장점은 SQL 문의 순서를 고려할 필요가 없고 원하는 대로 함수를 호출할 수 있다는 것입니다.

6.delete()

$model = M(&#39;WxuserCollection&#39;);
$res = $model - >where(&#39;id=1&#39;) - >delete(); // 成功返回1 失败返回0
로그인 후 복사


조건에 따른 작업 삭제


7 .field()

$model = M(&#39;WxuserCollection&#39;);
$res = $model - >field(&#39;id,good_id as good&#39;) - >select();
$res = $model - >field(array(&#39;id&#39;, &#39;good_id&#39; = >&#39;good&#39;)) - >select();
$res = $model - >field(&#39;id&#39;, true) - >select();
로그인 후 복사


문자열과 배열의 두 가지 방법이 있습니다. 세 번째는 처리 ID를 제외한 모든 필드를 가져오는 것을 의미합니다.

8.order()

$model = M(&#39;WxuserCollection&#39;);
$res = $model - >order(&#39;id desc&#39;) - >select();
$res = $model - >order(&#39;id asc&#39;) - >select();
$res = $model - >order(array(&#39;id&#39; = >&#39;desc&#39;)) - >select();
$res = $model - >order(array(&#39;id&#39;)) - >select();
로그인 후 복사


두 가지 메소드는 문자열과 배열이며 기본값은 asc입니다.

9.join()

$Model->join(&#39; work ON artist.id = work.artist_id&#39;)->join(&#39;card ON artist.card_id = card.id&#39;)->select();
$Model->join(&#39;RIGHT JOIN work ON artist.id = work.artist_id&#39;)->select();
$Model->join(array(&#39; work ON artist.id = work.artist_id&#39;,&#39;card ON artist.card_id = card.id&#39;))->select();
로그인 후 복사


기본적으로 LEFT JOIN 방식을 사용하며, 다른 JOIN 방식을 사용해야 하는 경우에는 변경할 수 있습니다.

조인 메서드의 매개변수가 배열인 경우 조인 메서드는 한 번만 사용할 수 있으며 문자열 메서드와 혼합할 수 없습니다.

10.setInc()

$User = M("User"); // 实例化User对象
$User->where(&#39;id=5&#39;)->setInc(&#39;score&#39;,3); // 用户的积分加3
$User->where(&#39;id=5&#39;)->setInc(&#39;score&#39;); // 用户的积分加1
$User->where(&#39;id=5&#39;)->setDec(&#39;score&#39;,5); // 用户的积分减5
$User->where(&#39;id=5&#39;)->setDec(&#39;score&#39;); // 用户的积分减1
로그인 후 복사


11.getField()

필드 값 가져오기

$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where(&#39;id=3&#39;)->getField(&#39;nickname&#39;);
로그인 후 복사


반환된 닉네임은 문자열 결과입니다. 즉, 조건을 만족하는 필드가 여러 개 있어도 하나의 결과만 반환됩니다.

특정 필드 열 가져오기

요구 사항을 충족하는 필드 열(여러 결과)을 반환하려면 다음을 사용할 수 있습니다.

$User = M("User"); // 实例化User对象
// 获取status为1的用户的昵称列表
$nickname = $User->where(&#39;status=1&#39;)->getField(&#39;nickname&#39;,true);
로그인 후 복사


두 번째 매개변수는 true로 전달되며, 반환되는 닉네임은 조건을 만족하는 모든 닉네임 목록이 포함된 배열입니다.

반환되는 결과 수를 제한해야 하는 경우 다음을 사용할 수 있습니다.

$nickname = $User->where(&#39;status=1&#39;)->getField(&#39;nickname&#39;,8);
로그인 후 복사


2개의 필드 목록 가져오기

$User = M("User"); // 实例化User对象
 // 获取status为1的用户的昵称列表
$nickname = $User->where(&#39;status=1&#39;)->getField(&#39;id,nickname&#39;);
로그인 후 복사


getField 메소드가 여러 필드 이름을 전달하는 경우 기본적으로 첫 번째 필드의 값을 인덱스로 사용하여 연관 배열이 반환됩니다. 따라서 첫 번째 필드는 비 필드로 선택해야 합니다. -가능한 한 중복).

여러 필드 목록 가져오기

$result = $User->where(&#39;status=1&#39;)->getField(&#39;id,account,nickname&#39;);
로그인 후 복사


2개 이상의 필드 이름이 전달되면 2차원 배열이 반환됩니다( select 메소드 의 반환 값 두 개의 테이블이 결합되므로 table 메소드를 사용하여 테이블 이름을 재정의하고 해당 조건과 매개변수를 접두사로 붙입니다. a. 또는 b.

여기서 필드는 문자열 또는 배열입니다.

$where = array(&#39;a.store_id&#39; => $this->store_id, &#39;a.user_id&#39; => $this->user_id);
$collects = $this->collectModel->table("sh_wxuser_collection a")->field(array(&#39;b.name&#39;,&#39;b.price&#39;,&#39;b.oprice&#39;,&#39;b.logoimg&#39;,&#39;a.goods_id&#39;))->limit($start, $offset)->order(&#39;a.addtime DESC&#39;)->where($where)->join(&#39; sh_goods b ON a.goods_id = b.id&#39;)->select();// 获取当前页的记录
echo M()->getLastSql(); // 调试sql语句用
$count = $this->collectModel->table("sh_wxuser_collection a")->where($where)->count(); // 获取总的记录数
로그인 후 복사
이런 식으로 쓴 적이 있는데, 큰 문제입니다.


프레임워크를 사용하면 SQL을 유연하게 작성할 수 없습니다. 그러나 SQL에 대한 깊은 이해가 있으면 프레임워크를 유연하게 사용하는 데에도 도움이 됩니다.

SQL 문 디버깅 방법.

이 글이 ThinkPHP 프레임워크를 기반으로 하는 모든 분들의 PHP 프로그램 설계에 도움이 되기를 바랍니다.
field(&#39;b.name&#39;, &#39;b.price&#39;, &#39;b.oprice&#39;, &#39;b.logoimg&#39;, &#39;a.goods_id&#39;) // 错误
로그인 후 복사

thinkPHP 데이터베이스의 추가, 삭제, 수정, 조회 등의 작업 방법에 대한 자세한 예시는 PHP 중국어 홈페이지 관련 기사를 참고해주세요!

관련 기사:

thinkphp에서 자신만의 함수와 클래스를 작성하는 방법, 배치 위치, 호출 방법에 대한 조언을 구하세요
echo M()->getLastSql();
로그인 후 복사

thinkPHP는 함수 호출과 클래스 라이브러리 메소드를 위한 간단한 샘플 코드

ThinkPHP3.2 프레임워크는 addAll()을 사용하여 데이터 메소드를 일괄 삽입하여 공유합니다

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿