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);
$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);
$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);
$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.
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') // 错误
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();