L'exemple de cet article décrit la méthode opérationnelle d'ajout, de suppression, de modification et d'interrogation de la base de données thinkPHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
thinkphp encapsule l'ajout, la suppression, la modification et l'interrogation de la base de données, la rendant plus pratique à utiliser, mais pas nécessairement flexible.
peut être utilisé en encapsulation. Vous devez écrire du SQL et vous pouvez exécuter du SQL.
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. Instancié pour la table, le nom original de la table ici est sh_wxuser_collection. sh est le préfixe.
$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);
Une autre façon d'écrire, _ peut être écrit en majuscule, il se convertira automatiquement en _
$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. Instruction d'ajout encapsulée
$model = M('WxuserCollection'); $data = array('user_id' = >$user_id, 'store_id' = >$store_id, 'good_id' = >$good_id, 'addtime' = >$addtime); $model - >data($data) - >add();
4. Instruction de modification encapsulée
$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();
C'est effectivement très pratique, mais à part la commodité, n'oubliez pas le SQL original, le SQL original, qui est le plus intéressant.
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 obtient une donnée, find(1) obtient les données avec l'identifiant 1, find(2 ) obtient les données avec l'identifiant 2. La dernière consiste à obtenir le premier élément de données avec la condition où.
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();
Obtenir toutes les données. L'avantage ici est que vous n'avez pas à prendre en compte l'ordre des instructions SQL, vous pouvez simplement appeler la fonction comme vous le souhaitez.
6.delete()
$model = M('WxuserCollection'); $res = $model - >where('id=1') - >delete(); // 成功返回1 失败返回0
Supprimer les opérations en fonction des conditions
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();
Il existe deux manières de créer une chaîne et un tableau. La troisième signifie obtenir tous les champs sauf l'identifiant de traitement.
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();
Deux méthodes sont une chaîne et un tableau, la valeur par défaut est 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();
La méthode LEFT JOIN est utilisée par défaut. Si vous devez utiliser d'autres méthodes JOIN, vous pouvez la modifier. au second.
Si les paramètres de la méthode join sont des tableaux, la méthode join ne peut être utilisée qu'une seule fois et elle ne peut pas être mélangée avec des méthodes chaîne.
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()
Obtenir une valeur de champ
$User = M("User"); // 实例化User对象 // 获取ID为3的用户的昵称 $nickname = $User->where('id=3')->getField('nickname');
Le pseudo renvoyé est un résultat de chaîne. Autrement dit, même si plusieurs champs remplissent la condition, un seul résultat sera renvoyé.
Obtenir une certaine colonne de champ
Si vous souhaitez renvoyer une colonne de champ (plusieurs résultats) qui répond aux exigences, vous pouvez utiliser :
$User = M("User"); // 实例化User对象 // 获取status为1的用户的昵称列表 $nickname = $User->where('status=1')->getField('nickname',true);
Le deuxième paramètre est passé en vrai, et le pseudo renvoyé est un tableau contenant une liste de tous les pseudos qui remplissent les conditions.
Si vous devez limiter le nombre de résultats renvoyés, vous pouvez utiliser :
$nickname = $User->where('status=1')->getField('nickname',8);
Obtenir 2 listes de champs
$User = M("User"); // 实例化User对象 // 获取status为1的用户的昵称列表 $nickname = $User->where('status=1')->getField('id,nickname');
Si la méthode getField transmet plusieurs noms de champs, un tableau associatif sera renvoyé par défaut, avec la valeur du premier champ comme index (le premier champ doit donc être choisi comme non -dupliquer autant que possible).
Obtenir plusieurs listes de champs
$result = $User->where('status=1')->getField('id,account,nickname');
Si plus de 2 noms de champs sont transmis, un tableau à deux dimensions sera renvoyé (similaire au méthode select La valeur de retour de Puisque deux tables sont combinées, la méthode table est utilisée pour redéfinir le nom de la table et préfixer les conditions et paramètres correspondants. a. Ou b.
où le champ field est soit une chaîne, soit un tableau.
$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(); // 获取总的记录数
J’ai déjà écrit comme ça, et c’est un gros problème.
field('b.name', 'b.price', 'b.oprice', 'b.logoimg', 'a.goods_id') // 错误
echo M()->getLastSql();
Le framework ThinkPHP3.2 utilise addAll() pour insérer par lots une méthode de données à partager