ThinkPHP-Datenbankoperationen: Hinzufügen, Löschen, Ändern und Abfragen

藏色散人
Freigeben: 2021-01-26 09:10:13
nach vorne
3205 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von thinkphp wird Ihnen das Hinzufügen, Löschen, Ändern und Suchen von ThinkPHP-Datenbankoperationen vorstellen. Ich hoffe, dass es Freunden in Not hilfreich sein wird!

Grundlegende Verwendung

Sie können die Datenbank direkt verwenden, um native SQL-Operationen auszuführen, Abfragemethoden (Abfrageoperationen) und Ausführungsmethoden (Schreiboperationen) zu unterstützen und die Parameterbindung zu unterstützen.

Db::query('select * from think_user where id=?',[8]);
Db::execute('insert into think_user (id, name) values (?, ?)',[8,'thinkphp']);
Nach dem Login kopieren

unterstützt auch die Bindung benannter Platzhalter, zum Beispiel:

Db::query('select * from think_user where id=:id',['id'=>8]);
Db::execute('insert into think_user (id, name) values (:id, :name)',['id'=>8,'name'=>'thinkphp']);
Nach dem Login kopieren

kann mehrere Datenbankverbindungen verwenden,

Db::connect($config)->query('select * from think_user where id=:id',['id'=>8]);
Nach dem Login kopieren

config ist eine separate Datenbankkonfiguration, unterstützt Arrays und Zeichenfolgen oder kann die Konfiguration eines Datenbankverbindungsparameternamens sein.

Daten abfragen

Einfache Abfrage

So fragen Sie eine Datenverwendung ab:

// table方法必须指定完整的数据表名
Db::table('think_user')->where('id',1)->find();
Nach dem Login kopieren

 Suchmethode-Abfrageergebnis ist nicht vorhanden, geben Sie null zurück

Nutzung des Abfragedatensatzes:

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

 Das Abfrageergebnis der Auswahlmethode existiert nicht und gibt ein leeres Array zurück.

Wenn der Datentabellenpräfixparameter festgelegt ist, können Sie

Db::name('user')->where('id',1)->find();
Db::name('user')->where('status',1)->select();
Nach dem Login kopieren

verwenden, wenn Ihre Datentabelle die Tabellenpräfixfunktion nicht verwendet Dann haben die Namens- und Tabellenmethoden den gleichen Effekt.

Alle Kettenbetriebsmethoden können vor den Such- und Auswahlmethoden verwendet werden.

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

Assistentenfunktion

Das System bietet eine Datenbankassistentenfunktion für eine bequemere Abfrage:

db('user')->where('id',1)->find();
db('user')->where('status',1)->select();
Nach dem Login kopieren

Hinweis: Bei Verwendung der Datenbankassistentenfunktion wird bei der Verwendung standardmäßig jedes Mal eine neue Verbindung zur Datenbank hergestellt Db Die Methoden ::name oder Db::table sind Singletons. Wenn die Datenbankfunktion denselben Link verwenden muss, können Sie beispielsweise den dritten Parameter übergeben:

db('user',[],false)->where('id',1)->find();
db('user',[],false)->where('status',1)->select();
Nach dem Login kopieren

 Die obige Methode verwendet dieselbe Datenbankverbindung. Der zweite Parameter ist der Verbindungsparameter der Datenbank leer, um die Datenbankkonfiguration zu verwenden.

Verwenden Sie das Abfrageobjekt oder den Abschluss zum Abfragen

oder verwenden Sie das Abfrageobjekt zum Abfragen, zum Beispiel:

$query = new \think\db\Query();$query->table('think_user')->where('status',1);
Db::find($query);
Db::select($query);
Nach dem Login kopieren

oder verwenden Sie direkt die Abschlussfunktion zum Abfragen, zum Beispiel:

Db::select(function($query){
  $query->table('think_user')->where('status',1);
});
Nach dem Login kopieren

Wertsummenspaltenabfrage

Um den Wert eines bestimmten Felds abzufragen, können Sie die

// 返回某个字段的值
Db::table('think_user')->where('id',1)->value('name');
Nach dem Login kopieren

 -Wertmethode verwenden, um das Ergebnis abzufragen, das nicht vorhanden ist, und null zurückzugeben

Um den Wert von a abzufragen In einer bestimmten Spalte können Sie die Methode

// 返回数组
Db::table('think_user')->where('status',1)->column('name');
// 指定索引
Db::table('think_user')->where('status',1)->column('name','id');
Nach dem Login kopieren

 column verwenden, um das Ergebnis abzufragen. Das Ergebnis ist nicht vorhanden. Es wird ein leeres Array zurückgegeben Sie können die Verwendung der Chunk-Methode in Betracht ziehen, die jeweils einen kleinen Teil der Ergebnismenge abruft und dann jeweils einen kleinen Teil der Daten in einen zu verarbeitenden Abschluss einfügt. Diese Methode ist sehr nützlich, wenn Sie schreiben, um eine große Anzahl von Datenbanken zu verarbeiten Aufzeichnungen.

Zum Beispiel können wir alle Benutzertabellendaten in Stapeln verarbeiten und jeweils 100 Benutzerdatensätze verarbeiten:

Db::table('think_user')->chunk(100, function($users) {    foreach ($users as $user) {        
//查询数据    
}
});// 或者交给回调方法
myUserIterator处理
Db::table('think_user')->chunk(100, 'myUserIterator');
Nach dem Login kopieren
Sie können die Verarbeitung des Datensatzes stoppen, indem Sie von der Abschlussfunktion false zurückgeben:
Db::table('think_user')->chunk(100, function($users) {    
// 处理结果集...
    return false;
});
Nach dem Login kopieren
Wird auch beim Aufrufen anderer Abfragemethoden unterstützt vor der Chunk-Methode, zum Beispiel:
Db::table('think_user')->where('score','>',80)->chunk(100,function($users) {    foreach ($users as $user) {    
//    
}
});
Nach dem Login kopieren

JSON-Datenabfrage (MySQL V5.0.1)

// 查询JSON类型字段 (info字段为json类型)
Db::table('think_user')->where('info$.email','thinkphp@qq.com')->find();
Nach dem Login kopieren

Daten hinzufügen

Ein Datenelement hinzufügen

Verwenden Sie die Die Einfügemethode der Db-Klasse übermittelt Daten an die Datenbank Fügt Daten erfolgreich hinzu. Gibt die Anzahl der erfolgreich hinzugefügten Elemente zurück. „Einfügen“ gibt normalerweise 1

zurück

添加数据后如果需要返回新增数据的自增主键,可以使用 getLastInsID 方法:

Db::name('user')->insert($data);$userId = Db::name('user')->getLastInsID();
Nach dem Login kopieren

或者直接使用 insertGetId 方法新增数据并返回主键值:

Db::name('user')->insertGetId($data);
Nach dem Login kopieren

  insertGetId 方法添加数据成功返回添加数据的自增主键

添加多条数据

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

$data = [
  ['foo' => 'bar', 'bar' => 'foo'],  ['foo' => 'bar1', 'bar' => 'foo1'],  ['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
Nach dem Login kopieren

  insertAll 方法添加数据成功返回添加成功的条数

助手函数

// 添加单条数据
db('user')->insert($data);
// 添加多条数据
db('user')->insertAll($list);
Nach dem Login kopieren

快捷更新

V5.0.5+ 以上版本封装的快捷更新方法 data ,可以配合 insert 使用。

下面举个例子说明用法:

Db::table('data')->data(['name'=>'tp','score'=>1000])->insert();
Nach dem Login kopieren

更新数据

更新数据表中的数据

Db::table('think_user')->where('id', 1)->update(['name' => 'thinkphp']);
Nach dem Login kopieren

如果数据中包含主键,可以直接使用:

Db::table('think_user')->update(['name' => 'thinkphp','id'=>1]);
Nach dem Login kopieren

  update 方法返回影响数据的条数,没修改任何数据返回 0

如果要更新的数据需要使用 SQL 函数或者其它字段,可以使用下面的方式:

Db::table('think_user')->where('id', 1)->update([    'login_time' => ['exp','now()'],
    'login_times' => ['exp','login_times+1'],]);
Nach dem Login kopieren

更新某个字段的值

Db::table('think_user')    ->where('id',1)    ->setField('name', 'thinkphp');
Nach dem Login kopieren

  setField 方法返回影响数据的条数,没修改任何数据字段返回 0

自增或自减一个字段的值

setInc/setDec 如不加第二个参数,默认值为1

// score 字段加 1
Db::table('think_user')    ->where('id', 1)    ->setInc('score');
// score 字段加 5
Db::table('think_user')    ->where('id', 1)    ->setInc('score', 5);
// score 字段减 1
Db::table('think_user')    ->where('id', 1)    ->setDec('score');
// score 字段减 5
Db::table('think_user')    ->where('id', 1)    ->setDec('score', 5);
Nach dem Login kopieren

延迟更新

setInc/setDec 支持延时更新,如果需要延时更新则传入第三个参数

下例中延时10秒,给 score 字段增加1

Db::table('think_user')->where('id', 1)->setInc('score', 1, 10);
Nach dem Login kopieren

  setInc/setDec 方法返回影响数据的条数

助手函数

// 更新数据表中的数据
db('user')->where('id',1)->update(['name' => 'thinkphp']);
// 更新某个字段的值
db('user')->where('id',1)->setField('name','thinkphp');
// 自增 score 字段
db('user')->where('id', 1)->setInc('score');
// 自减 score 字段
db('user')->where('id', 1)->setDec('score');
Nach dem Login kopieren

快捷更新( V5.0.5+ )

V5.0.5+ 以上版本封装的 data 、 inc 、 dec 和 exp 方法属于链式操作方法,可以配合 update 使 用。

下面举个例子说明用法:

Db::table('data')->where('id',1)->inc('read')->dec('score',3)->exp('name','UPPER(name)')->update();
Nach dem Login kopieren

删除数据

删除数据表中的数据

// 根据主键删除
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);
// 条件删除
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<&#39;,10)->delete();
Nach dem Login kopieren

  delete 方法返回影响数据的条数,没有删除返回 0

助手函数

// 根据主键删除
db('user')->delete(1);
// 条件删除
db('user')->where('id',1)->delete();
Nach dem Login kopieren

 

Das obige ist der detaillierte Inhalt vonThinkPHP-Datenbankoperationen: Hinzufügen, Löschen, Ändern und Abfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
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