>  기사  >  백엔드 개발  >  thinkphp5.0 연구 노트 데이터베이스 운영

thinkphp5.0 연구 노트 데이터베이스 운영

巴扎黑
巴扎黑원래의
2017-06-23 13:53:121938검색

ThinkPHP에는 다양한 데이터베이스 작업을 캡슐화하는 추상 데이터베이스 액세스 계층이 내장되어 있습니다. 다른 데이터베이스에 대한 다른 코드 및 기본 구현을 작성하지 않고 작동하려면 Db 클래스가 자동으로 해당 데이터베이스를 호출합니다. 운전자가 처리합니다. PDO 방법을 사용하면 현재 Mysql, SqlServer, PgSQL, Sqlite 및 기타 데이터베이스에 대한 지원이 포함됩니다.

1. 기본 사용

데이터베이스 연결 정보를 구성한 후 데이터베이스를 직접 사용하여 기본 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();

이 질의문은 위와 같지만, select method 질의 결과가 존재하지 않고 빈 배열을 반환합니다

글쎄, 이것을 질의 데이터셋이라고 하는데요, 그렇죠!

기본적으로 찾기 및 선택 메서드는 배열을 반환합니다.

특정 필드의 값을 쿼리

하려면 어떻게 해야 하나요?

public function read()
{// 返回某个字段的值$sql =Db::table('news')->where('nid',18)->value('rid');
    dump($sql);
}

这样看输出,我求rid的值:

 

如果你需要处理成千上百条数据库记录,可以考虑使用chunk方法,该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包,该方法在编写处理大量数据库记录的时候非常有用。

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);
}

添加成功后insert 方法返回添加成功的条数,insert 正常情况返回 1

添加数据后如果需要返回新增数据的自增主键,可以使用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);
}

看输出:

主键字段22!

 

 添加多条数据:

添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可;

public function read()
{$data = [
['ntitle' =>'gaga','rid' => '12'],['ntitle' =>'gaaaga','rid' => '123']
];$sql = Db::table('news')->insertAll($data);

dump($sql);
}

这样的话,返回的应该是两条2

删除数据:

根据主键来删除

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','<&#39;,1)->delete();dump($sql);
}

执行成功也是返回影响行数;

4.查询方法:

where方法:

可以使用where方法进行AND条件查询:

public function read()
{$sql = Db::table('news')->where('nid',20)->where('ntitle',123)->find();
dump($sql);
}

whereOr方法:

使用whereOr方法进行OR查询:

public function read()
{$sql = Db::table('news')->where('nid',20)->whereOr('ntitle','like','%123%')->find();
dump($sql);
}

混合查询:

where方法和whereOr方法在复杂的查询条件中经常需要配合一起混合使用

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' )

第一个查询方法用where或者whereOr是没有区别的。

 

查询接五

 

위 내용은 thinkphp5.0 연구 노트 데이터베이스 운영의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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