Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Beispiele für das Hinzufügen, Löschen, Ändern und Abfragen von ThinkPHP-Datenbanken

Detaillierte Erläuterung der Beispiele für das Hinzufügen, Löschen, Ändern und Abfragen von ThinkPHP-Datenbanken

高洛峰
高洛峰Original
2017-03-24 17:47:301399Durchsuche

Das Beispiel in diesem Artikel beschreibt die Vorgehensweise zum Hinzufügen, Löschen, Ändern und Abfragen der thinkPHP-Datenbank. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

thinkphp kapselt das Hinzufügen, Löschen, Ändern und Abfragen der Datenbank, was die Verwendung komfortabler, aber nicht unbedingt flexibel macht.

kann in der Kapselung verwendet werden. Sie müssen SQL schreiben und können SQL ausführen.

1. Original

$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. Der ursprüngliche Name der Tabelle lautet hier sh_wxuser_collection. sh ist das Präfix.

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


Eine andere Schreibweise: _ kann in Großbuchstaben geschrieben werden, es wird automatisch in _ umgewandelt

$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. Gekapselte Add-Anweisung

$model = M('WxuserCollection');
$data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime);
$model - >data($data) - >add();


4. Gekapselte Modify-Edit-Anweisung

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


Es ist in der Tat sehr praktisch, aber vergessen Sie neben der Bequemlichkeit nicht das Original-SQL, das Original-SQL, das am interessantesten ist.

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 ruft ein Datenelement ab, find(1) ruft die Daten mit der ID 1 ab, find(2 ) ruft die Daten mit der ID 2 ab. Der letzte Schritt besteht darin, die ersten Daten mit der Bedingung wo abzurufen.

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


Alle Daten abrufen. Der Vorteil hierbei ist, dass Sie nicht auf die Reihenfolge der SQL-Anweisungen achten müssen, sondern die Funktion einfach beliebig aufrufen können.

6.delete()

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


Vorgänge basierend auf Bedingungen löschen


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


Es gibt zwei Möglichkeiten für String und Array. Die dritte Möglichkeit bedeutet, alle Felder außer der Verarbeitungs-ID abzurufen.

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


Zwei Methoden sind String und Array, der Standardwert ist 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();


Die LEFT JOIN-Methode wird standardmäßig verwendet. Wenn Sie andere JOIN-Methoden verwenden müssen, können Sie diese ändern

Wenn die Parameter der Join-Methode Arrays sind, kann die Join-Methode nur einmal verwendet werden und sie kann nicht mit String-Methoden gemischt werden.

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

Einen Feldwert abrufen

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


Der zurückgegebene Spitzname ist ein String-Ergebnis. Das heißt, selbst wenn mehrere Felder die Bedingung erfüllen, wird nur ein Ergebnis zurückgegeben.

Eine bestimmte Feldspalte abrufen

Wenn Sie eine Feldspalte (mehrere Ergebnisse) zurückgeben möchten, die den Anforderungen entspricht, können Sie Folgendes verwenden:

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


Der zweite Parameter wird in true übergeben und der zurückgegebene Spitzname ist ein Array, das eine Liste aller Spitznamen enthält, die die Bedingungen erfüllen.

Wenn Sie die Anzahl der zurückgegebenen Ergebnisse begrenzen müssen, können Sie Folgendes verwenden:

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


2 Feldlisten abrufen

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


Wenn die getField-Methode mehrere Feldnamen übergibt, wird standardmäßig ein assoziatives Array mit dem Wert des ersten Felds als Index zurückgegeben (daher sollte das erste Feld als nicht ausgewählt werden). -möglichst duplizieren).

Mehrere Feldlisten abrufen

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


Wenn mehr als 2 Feldnamen übergeben werden, wird ein zweidimensionales Array zurückgegeben (ähnlich wie select-Methode Der Rückgabewert von Da zwei Tabellen kombiniert werden, wird die Tabellenmethode verwendet, um den Tabellennamen neu zu definieren und den entsprechenden Bedingungen und Parametern ein Präfix voranzustellen. a. Oder b.

wobei das Feld field entweder eine Zeichenfolge oder ein Array ist.

Ich habe so schon einmal geschrieben und es ist ein großes Problem.
$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(); // 获取总的记录数

Mit einem Framework können Sie SQL nicht flexibel schreiben. Allerdings ist auch ein tiefes Verständnis von SQL förderlich für den flexiblen Einsatz des Frameworks.

Methode zum Debuggen von SQL-Anweisungen.

Ich hoffe, dass dieser Artikel für jedermann beim PHP-Programmdesign basierend auf dem ThinkPHP-Framework hilfreich sein wird.

field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误
Ausführlichere Beispiele für die Methoden zum Hinzufügen, Löschen, Ändern und Abfragen der thinkPHP-Datenbank finden Sie auf der chinesischen PHP-Website für verwandte Artikel!

Verwandte Artikel:

Bitten Sie um Rat, wie Sie Ihre eigenen Funktionen und Klassen in thinkphp schreiben, wo Sie sie platzieren und wie Sie sie aufrufen

echo M()->getLastSql();

thinkPHP ist ein einfacher Beispielcode zum Aufrufen von Funktionen und Klassenbibliotheksmethoden

Das ThinkPHP3.2-Framework verwendet addAll(), um die Datenmethode stapelweise zum Teilen einzufügen

Stellungnahme:
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