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

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

高洛峰
高洛峰원래의
2017-03-24 17:47:301449검색

본 글의 예시에서는 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('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >add();


4. 캡슐화된 수정 edit 문

$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();


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

5.find()

$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();


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

5.select()

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


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

6.delete()

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


조건에 따른 작업 삭제


7 .field()

$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();


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

8.order()

$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();


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

9.join()

$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();


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

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

10.setInc()

$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


11.getField()

필드 값 가져오기

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


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

특정 필드 열 가져오기

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

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


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

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

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


2개의 필드 목록 가져오기

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


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

여러 필드 목록 가져오기

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


2개 이상의 필드 이름이 전달되면 2차원 배열이 반환됩니다( select 메소드 의 반환 값 두 개의 테이블이 결합되므로 table 메소드를 사용하여 테이블 이름을 재정의하고 해당 조건과 매개변수를 접두사로 붙입니다. 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 문 디버깅 방법.

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

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

관련 기사:

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

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

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

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