ThinkPHP에는 다양한 데이터베이스 작업을 캡슐화하는 추상 데이터베이스 액세스 계층이 내장되어 있습니다. 다른 데이터베이스에 대한 다른 코드 및 기본 구현을 작성하지 않고 작동하려면 Db 클래스가 자동으로 해당 데이터베이스를 호출합니다. 운전자가 처리합니다. PDO 방법을 사용하면 현재 Mysql, SqlServer, PgSQL, Sqlite 및 기타 데이터베이스에 대한 지원이 포함됩니다.
데이터베이스 연결 정보를 구성한 후 데이터베이스를 직접 사용하여 기본 SQL 작업을 실행하고 query
(查询操作)和execute
(쓰기 작업) 방법을 지원하며 매개 변수 바인딩을 지원할 수 있습니다.
public function read() {$sql = Db::query('select * from news'); dump($sql); }
출력은 다음과 같습니다.
실행 방법:
public function read() {$sql = Db::execute('insert into news (nid, rid) values (11, 11)');; dump($sql); }
출력:
데이터베이스가 성공적으로 추가되었습니다!
는 명명된 자리 표시자 바인딩도 지원합니다. 예:
public function read() {$sql = Db::query('select * from news where nid=:nid',['nid'=>1]); dump($sql); }
output:
실행 방법:
public function read() {$sql = Db::execute('insert into news (nid, rid) values (:nid, :rid)',['nid'=>18,'rid'=>'121']); dump($sql); }
출력:
데이터베이스가 성공적으로 추가되었습니다!
여러 데이터베이스 연결을 사용할 수 있습니다:
2. 쿼리 생성자
먼저 기본 쿼리
를 참조하세요.데이터 쿼리:
// table方法必须指定完整的数据表名$sql =Db::table('news')->where('nid',1)->find(); dump($sql);find = 항목을 쿼리했는데 쿼리 결과가 없으면 null을 반환합니다.
출력:
Db::table('think_user')->where('status',1)->select();
글쎄, 이것을 질의 데이터셋이라고 하는데요, 그렇죠!
기본적으로 찾기 및 선택 메서드는 배열을 반환합니다.
특정 필드의 값을 쿼리
하려면 어떻게 해야 하나요?这样看输出,我求rid的值:
如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用。 这个样子 就可以一条一条都给遍历出来了! 是“一条一条·”,嘿! 使用 添加成功后insert 方法返回添加成功的条数,insert 正常情况返回 1 添加数据后如果需要返回新增数据的自增主键,可以使用 看输出: 主键字段22! 添加多条数据: 添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可; 这样的话,返回的应该是两条2
删除数据: 根据主键来删除 执行成功返回影响行数; 还有一种是根据条件来删除的 执行成功也是返回影响行数; where方法: 可以使用 whereOr方法: 使用 混合查询: where方法和whereOr方法在复杂的查询条件中经常需要配合一起混合使用 输出的是: 看一下生成的代码: 第一个查询方法用where或者whereOr是没有区别的。 查询接五 public function read()
{// 返回某个字段的值$sql =Db::table('news')->where('nid',18)->value('rid');
dump($sql);
}
public function read()
{$sql =Db::table('news')->chunk(1,function($user){foreach($user as $u)
{
dump($u);
}
});
}
3.添加数据跟删除数据
Db
类的 insert
方法向数据库提交数据public function read()
{$data = ['ntitle' => '123', 'rid' => '456'];$sql = Db::table('news')->insert($data);
dump($sql);
}
getLastInsID
方法:public function read()
{$data = ['ntitle' => '123', 'rid' => '345'];$sql = Db::table('news')->insert($data);$userId = Db::name('news')->getLastInsID('nid');
dump($userId);
dump($sql);
}
public function read()
{$data = [
['ntitle' =>'gaga','rid' => '12'],['ntitle' =>'gaaaga','rid' => '123']
];$sql = Db::table('news')->insertAll($data);
dump($sql);
}
public function read()
{// 根据主键 来删$sql = Db::table('news')->delete(1);//多删
//$sql = Db::table('news')->delete(1,2,3);dump($sql);
}
public function read()
{// 根据条件 来删$sql = Db::table('news')->where('nid',18)->delete();//多删
//$sql = Db::table('news')->where('nid','<',1)->delete();dump($sql);
}
4.查询方法:
where
方法进行AND
条件查询:public function read()
{$sql = Db::table('news')->where('nid',20)->where('ntitle',123)->find();
dump($sql);
}
whereOr
方法进行OR
查询:public function read()
{$sql = Db::table('news')->where('nid',20)->whereOr('ntitle','like','%123%')->find();
dump($sql);
}
public function read()
{$sql = Db::table('news')->where(function($query){$query->where('nid',21)->where('nid',22);
})->whereOr(function($query)
{$query->where('ntitle','123')->whereOr('ntitle','123');
})->select();
dump($sql);
}
SELECT * FROM `news` WHERE ( `nid` = 1 OR `nid` = 2 ) OR ( `ntitle` LIKE '123' OR `ntitle` LIKE '123' )
위 내용은 thinkphp5.0 연구 노트 데이터베이스 운영의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!