>  기사  >  백엔드 개발  >  thinkPHP 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업

thinkPHP 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업

不言
不言원래의
2018-06-07 15:22:172858검색

이 글에서는 thinkPHP의 데이터베이스 추가, 삭제, 수정, 쿼리 등의 조작 방법을 주로 소개하고 있으며, thinkPHP에서 흔히 사용되는 데이터베이스 조작 기능과 관련 사용법을 예시로 분석하여 도움이 필요한 친구들이 참고할 수 있도록 해드립니다. 이 글에서는 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으로 수정됩니다.

$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >add();

는 정말 편리하지만 별개입니다. 편의상 원본 SQL, 원본 SQL이 가장 흥미롭다는 점을 잊지 마세요.

5.find()

$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >where('id=3') - >save();

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

5.select()

$model = M('WxuserCollection');
$res1 = $model - >find(1);
$res2 = $model - >find(2);
$res3 = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >find();

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

6.delete()

$model = M('WxuserCollection');
$res = $model - >where('good_id=1105 AND store_id = 1 AND user_id = 20') - >field('id,good_id as good') - >select();

조건에 따른 삭제 작업

7.field()

$model = M('WxuserCollection');
$res = $model - >where('id=1') - >delete(); // 成功返回1 失败返回0

두 가지 방법: 및 배열, 세 번째 하나는 처리 ID를 제외한 모든 필드를 가져오는 것을 의미합니다.

8.order()

$model = M('WxuserCollection');
$res = $model - >field('id,good_id as good') - >select();
$res = $model - >field(array('id', 'good_id' = >'good')) - >select();
$res = $model - >field('id', true) - >select();

두 가지 방법: 문자열과 배열, 기본 asc.

9.join()

$model = M('WxuserCollection');
$res = $model - >order('id desc') - >select();
$res = $model - >order('id asc') - >select();
$res = $model - >order(array('id' = >'desc')) - >select();
$res = $model - >order(array('id')) - >select();

다른 JOIN 방법을 사용해야 하는 경우 두 번째 방법으로 변경할 수 있습니다.

조인 방법의 매개변수를 사용하면 됩니다. 배열의 경우 조인 방법은 한 번만 사용할 수 있으며 문자열 방법과 혼합할 수 없습니다.

10.setInc()

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();
$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();
$Model->join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))->select();

11.getField()

필드 값 가져오기

$User = M("User"); // 实例化User对象
$User->where('id=5')->setInc('score',3); // 用户的积分加3
$User->where('id=5')->setInc('score'); // 用户的积分加1
$User->where('id=5')->setDec('score',5); // 用户的积分减5
$User->where('id=5')->setDec('score'); // 用户的积分减1

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

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

$User = M("User"); // 实例化User对象
// 获取ID为3的用户的昵称
$nickname = $User->where('id=3')->getField('nickname');

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

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

$User = M("User"); // 实例化User对象
// 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('nickname',true);

2개의 필드 목록을 가져옵니다.

$nickname = $User->where('status=1')->getField('nickname',8);

getField 메소드가 여러 필드 이름을 전달하는 경우, 연관은 첫 번째 필드의 값으로 인덱싱된 기본 배열에 의해 반환됩니다(따라서 첫 번째 필드는 가능한 한 중복되지 않은 것으로 선택해야 합니다).

여러 필드 목록 가져오기

$User = M("User"); // 实例化User对象
 // 获取status为1的用户的昵称列表
$nickname = $User->where('status=1')->getField('id,nickname');

2개 이상의 필드 이름이 전달되면 2차원 배열이 반환됩니다. (select 메서드의 반환 값과 유사하지만 차이점은 인덱스는 2차원 배열 키 이름은 첫 번째 필드의 값)

종합 사용 사례

$result = $User->where('status=1')->getField('id,account,nickname');

여기서는 두 개의 테이블을 합쳤기 때문에 테이블 메소드를 사용하여 인덱스를 재정의합니다. 테이블 이름, 해당 조건 및 모든 매개변수가 앞에 붙어야 합니다. a. 또는 b.

필드 필드는 문자열이거나 배열입니다.

$where = array('a.store_id' => $this->store_id, 'a.user_id' => $this->user_id);
$collects = $this->collectModel->table("sh_wxuser_collection a")->field(array('b.name','b.price','b.oprice','b.logoimg','a.goods_id'))->limit($start, $offset)->order('a.addtime DESC')->where($where)->join(' sh_goods b ON a.goods_id = b.id')->select();// 获取当前页的记录
echo M()->getLastSql(); // 调试sql语句用
$count = $this->collectModel->table("sh_wxuser_collection a")->where($where)->count(); // 获取总的记录数
이런 글을 예전에 썼는데 큰 문제가 됐습니다.

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

SQL 문 디버깅 방법.

field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误

매우 편리합니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

PHP는 Excel 파일을 업로드하여 MySQL 데이터베이스로 데이터를 가져옵니다.

thinkphp3.2.3 버전의 데이터베이스 추가, 삭제, 수정 및 구현 코드 확인

thinkPHP5 방법으로 콘텐츠 추가 데이터베이스


위 내용은 thinkPHP 데이터베이스의 추가, 삭제, 수정 및 쿼리 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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