thinkphp5.0 Studiennotizen Datenbankbetrieb

巴扎黑
Freigeben: 2023-03-11 06:02:02
Original
1952 Leute haben es durchsucht

ThinkPHP verfügt über eine integrierte abstrakte Datenbankzugriffsschicht, die verschiedene Datenbankoperationen kapselt. Wir müssen nur die öffentliche Db-Klasse verwenden, um verschiedene Codes und zugrunde liegende Implementierungen für verschiedene Datenbanken zu schreiben den entsprechenden Datenbanktreiber zur Verarbeitung. Mithilfe der PDO-Methode bietet es derzeit Unterstützung für MySQL, SqlServer, PgSQL, Sqlite und andere Datenbanken.

1. Grundlegende Verwendung

Nachdem wir die Datenbankverbindungsinformationen konfiguriert haben, können wir die Datenbank direkt zum Ausführen nativer SQL-Vorgänge verwenden, Unterstützungquery (Abfragevorgang) und execute (Schreibvorgang) und unterstützt die Parameterbindung.

public function read()
{$sql = Db::query('select * from news');
    dump($sql);   
    
}
Nach dem Login kopieren

Die Ausgabe ist:

Methode ausführen:

public function read()
{$sql = Db::execute('insert into news (nid, rid) values (11, 11)');;
    dump($sql);
}
Nach dem Login kopieren

Ausgabe:

Datenbank erfolgreich hinzugefügt!

unterstützt auch die Bindung von benannten Platzhaltern , zum Beispiel:

public function read()
{$sql = Db::query('select * from news where nid=:nid',['nid'=>1]);
    dump($sql);
}
Nach dem Login kopieren

Ausgabe:

Ausführungsmethode:

public function read()
{$sql = Db::execute('insert into news (nid, rid) values (:nid, :rid)',['nid'=>18,'rid'=>'121']);
    dump($sql);
}
Nach dem Login kopieren

Ausgabe:

Datenbank erfolgreich hinzugefügt

kann mehrfach verwendet werden Datenbankverbindungen:

2. Abfragekonstruktor

Wie Sie am Namen erkennen können, ist es sehr anspruchsvoll...

Sehen wir uns zunächst die Grundabfrage an;

Daten abfragen:

 // table方法必须指定完整的数据表名$sql =Db::table('news')->where('nid',1)->find();
    dump($sql);
Nach dem Login kopieren

find = Ein Element abfragen; und das Abfrageergebnis existiert nicht, gib null zurück

Ausgabe:

Db::table('think_user')->where('status',1)->select();
Nach dem Login kopieren

Diese Abfrageanweisung ist die gleiche wie oben, aber das Abfrageergebnis der Auswahlmethode existiert nicht und gibt ein leeres Array zurück

Nun, dieses Ding heißt Abfragedatensatz, das ist richtig!

Standardmäßig geben die Such- und Auswahlmethoden Arrays zurück.

Was ist, wenn Sie den Wert eines bestimmten Feldes abfragen möchten?

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

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

 

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

public function read()
{$sql =Db::table('news')->chunk(1,function($user){foreach($user as $u)
        {
dump($u);
        }
    });
    

}
Nach dem Login kopieren

这个样子  就可以一条一条都给遍历出来了!

是“一条一条·”,嘿!

 

3.添加数据跟删除数据

使用 Db 类的 insert 方法向数据库提交数据

public function read()
{$data = ['ntitle' => '123', 'rid' => '456'];$sql = Db::table('news')->insert($data);
    
dump($sql);
}
Nach dem Login kopieren

添加成功后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);
}
Nach dem Login kopieren

看输出:

主键字段22!

 

 添加多条数据:

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

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

dump($sql);
}
Nach dem Login kopieren

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

删除数据:

根据主键来删除

public function read()
{//    根据主键 来删$sql = Db::table('news')->delete(1);//多删
//$sql = Db::table('news')->delete(1,2,3);dump($sql);
}
Nach dem Login kopieren

执行成功返回影响行数;

还有一种是根据条件来删除

public function read()
{//    根据条件 来删$sql = Db::table('news')->where('nid',18)->delete();//多删
//$sql = Db::table('news')->where('nid','<&#39;,1)->delete();dump($sql);
}
Nach dem Login kopieren

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

4.查询方法:

where方法:

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

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

whereOr方法:

使用whereOr方法进行OR查询:

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

混合查询:

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);
}
Nach dem Login kopieren

输出的是:

看一下生成的代码:

SELECT * FROM `news` WHERE  (  `nid` = 1 OR `nid` = 2 ) OR (  `ntitle` LIKE '123' OR `ntitle` LIKE '123' )
Nach dem Login kopieren

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

 

查询接五

 

Das obige ist der detaillierte Inhalt vonthinkphp5.0 Studiennotizen Datenbankbetrieb. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage