【三十四】thinkphp之curd操作

1.数据创建(create)

接受提交过来的数据,比如表单提交的 POST(默认)数据。接受到数据后,还可以对数据进行有效的验证、完成、生成等工作

     // 这里 create()方法就是数据创建,数据的结果就是提交的 POST 数据的键值对。
   // 特别注意的是:提交过来的字段和数据表字段是对应的,否则无法解析
     //根据表单提交的POST数据,创建数据
      var_dump($user->create());

通过$_post接收数据

      //通过数组手工获取数据,覆盖提交的
      $data[‘name‘]=‘qqq‘;
      $data[‘password‘]="456";
      $data[‘email‘]="[email protected]";
      $data[‘age‘]=52;
      var_dump($user->create($data));
      //通过对象手工获取数据,覆盖提交的
      $data=new \stdClass();
      $data->name=$_POST[‘name‘];
      $data->password=$_POST[‘password‘];
      $data->email=$_POST[‘email‘];
      $data->age=$_POST[‘age‘];
      var_dump($user->create($data));
      // 默认是$_POST,传递$_GET修改
      var_dump($user->create($_GET));

create()方法可以传递第二个参数,将要操作的模式,有两种:Model::MODEL_INSER和 Model::MODEL _UPDATE,即新增和修改。当没有指定的时候,系统会根据数据源是否包含主键来自动判断,如果包含主键,则就是修改

操作

      // 设置将要新增操作
      var_dump($user->create($_POST,Model::MODEL_INSERT));

      //限制可操作的字段
      // 提交过来的数据只会接收name字段的值
      var_dump($user->field(‘name‘)->create());

2.数据写入(add)

数据写入使用的是 add()方法。

     //新增一条数据
      // sql:INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘caiminfang‘,‘123‘,‘[email protected]‘,15)
      $user=M(‘user1‘);
      $data[‘name‘]=‘caiminfang‘;
      $data[‘password‘]="123";
      $data[‘email‘]="[email protected]";
      $data[‘age‘]=15;
      $user->add($data);
      // 结合create()方法
      // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘cmfcmf‘,‘456‘,‘[email protected]‘,18)    $data $user->create();
      $data[‘name‘]=$_POST[‘name‘];
      $data[‘password‘]=$_POST[‘password‘];
      $data[‘email‘]=$_POST[‘email‘];
      $data[‘age‘]=$_POST[‘age‘];
      $user->add($data);

      //INSERT INTO `user1` (`name`) VALUES (‘asdasd‘)
      //使用data连贯操作
      $user=M(‘user1‘);
      $data=$user->create();
      $data[‘name‘]=‘asdasd‘;
      var_dump($user->data($data)->add());

      // data连贯方法,支持字符串、数组、对象
      // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘xingshi‘,‘123‘,‘[email protected]‘,55)
      $data=‘name=xingshi&password=123&[email protected]&age=55‘;
      $user->data($data)->add();

3.数据读取(select)

支持连贯方法的有:http://www.cnblogs.com/8013-cmf/p/8317720.html(请阅读此篇文章)

field和getField的区别:

  1.  field():用于定义要查询的字段
  2. getField():用于查询某个字段的值
      $user=M(‘user1‘);
      //显示所有数据
      // SELECT * FROM `user1`
      var_dump($user->select());

      //显示默认第一条数据
      // SELECT * FROM `user1` LIMIT 1
      var_dump($user->find());

      // 获取第一条name字段的值
      // SELECT `name` FROM `user1` LIMIT 1
      var_dump($user->getField(‘name‘));

      // 获取所有user字段的name值
      // SELECT `name` FROM `user1`
      var_dump($user->getField(‘name‘,true));

      //获取所有user的name值和email值
      // SELECT `name`,`email` FROM `user1`
      var_dump($user->getField(‘name,email‘));

      //以冒号分隔
      // SELECT `name`,`email`,`age` FROM `user1`
      var_dump($user->getField(‘name,email,age‘,":"));

      //限制2条数据
      //SELECT `name`,`email` FROM `user1` LIMIT 2
      var_dump($user->getField(‘name,email‘,2));

4.数据更新(save)

主要是对数据的修改操作。

      $user=M(‘user1‘);
      //修改数据
      // UPDATE `user1` SET `name`=‘zxczxc‘ WHERE `id` = 4
      $data[‘name‘]="zxczxc";
      $map[‘id‘]=4;
      $user->where($map)->save($data);

      //默认主键为条件
      // UPDATE `user1` SET `name`=‘hello‘ WHERE `id` = 3
      $data[‘id‘]=3;
      $data[‘name‘]="hello";
      $user->save($data);

结合create使用save

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title></title>
</head>
<body>
<form method="post" action="http://localhost/basic_thinkphp/index.php/Home/Model/save">
<!-- 必须要定义id的默认值 -->
    <input type="hidden" name="id" value="3">
    用户名:<input type="text" name="name"><br/>
    密码:<input type="text" name="password"><br/>
    邮箱:<input type="text" name="email"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

ModelController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
use Think\Model;
use Think\stdClass;
class ModelController extends Controller {
    public function save(){
      $user=M(‘user1‘);
      // 结合create
      // UPDATE `user1` SET `name`=‘test1‘,`password`=‘456‘,`email`=‘[email protected]‘,`age`=88 WHERE `id` = 3
      $user->create();    //post必须包含主键,我是在前端定义的
      $user->save();
}
}
      $user=M(‘user1‘);
      // 修改某一个值
      // UPDATE `user1` SET `name`=‘labixiaoxin‘ WHERE `id` = 3
      $map[‘id‘]=3;
      $user->where($map)->setField(‘name‘,‘labixiaoxin‘);

      //统计累计,累加累减
      // UPDATE `user1` SET `age`=age+1 WHERE `id` = 3
      $map[‘id‘]=3;
      $user->where($map)->setInc(‘age‘,1);

5.数据删除(delete)

    $user=M(‘user1‘);
    // 直接删除主键(id=8)
    // DELETE FROM `user1` WHERE `id` = 8
    $user->delete(8);

    //根据id删除
    // DELETE FROM `user1` WHERE `id` = 47
    $map[‘id‘]=47;
    $user->where($map)->delete();

    //批量删除多个
    // DELETE FROM `user1` WHERE `id` IN (‘45‘,‘46‘)
    $user->delete("45,46");

    //删除年龄为16且按照id倒序的前2个
    // DELETE FROM `user1` WHERE `age` = 16 ORDER BY `id` DESC LIMIT 2
    $map[‘age‘]=16;
    $user->where($map)->order(array(‘id‘=>‘DESC‘))->limit(2)->delete();

    // 删除所有数据
    echo $user->where(‘1‘)->delete();

6.ActiveReocrd 模式

这种模式最大的特别就是简化了 CURD 的操作,并且采用对象化的操作方式,便于使用和理解。

    // 添加一条数据
    $user = M(‘User‘);
    $user->user = ‘火影忍者‘;
    $user->email = ‘[email protected]‘;
    $user->date = date(‘Y-m-d H:i:s‘);
    $user->add();

    //结合create
    $user = M(‘User‘);
    $user->create();
    $user->date = date(‘Y-m-d H:i:s‘);
    $user->add();

    //找到主键为4的值
    $user = M(‘User‘);
    var_dump($user->find(4))

    //查找user=蜡笔小新的记录
    $user = M(‘User‘);
    var_dump($user->getByUser(‘蜡笔小新‘));

    //输出userecho
    $user->user;
    //通过主键查询多个
    $user = M(‘User‘);
    var_dump($user->select(‘1,2,3‘));
    //修改一条数据
    $user = M(‘User‘);
    $user->find(1);
    $user->user = ‘蜡笔老新‘;
    $user->save();

    //删除当前找到的数据
    $user = M(‘User‘);
    $user->find(11);
    $user->delete();

    //删除主键为10的数据
    $user = M(‘User‘);
    $user->delete(10);

    //删除主键为10,11的数据
    $user = M(‘User‘);
    $user->delete(‘10,11‘

原文地址:https://www.cnblogs.com/8013-cmf/p/8321360.html

时间: 2024-10-11 07:16:32

【三十四】thinkphp之curd操作的相关文章

Python进阶(三十四)-Python3多线程解读

Python进阶(三十四)-Python3多线程解读 线程讲解 ??多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度. 程序的运行速度可能加快. 在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下我们可以释放一些珍贵的资源如内存占用等等. ??线程在执行过程中与进程还是有区别的.每个独立

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

三十四、git rm简介

本文翻译整理自:http://web.mit.edu/~mkgray/project/silk/root/afs/sipb/project/git/git-doc/git-rm.html 在git中我们可以通过git rm命令把一个文件删除,并把它从git的仓库管理系统中移除.但是注意最后要执行git commit才真正提交到git仓库 示例1 git rm 1.txt 删除1.txt文件,并把它从git的仓库管理系统中移除. 示例2 git rm -r myFolder 删除文件夹myFold

QT开发(二十四)——QT文件操作

QT开发(二十四)--QT文件操作 一.QT文件操作简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同. 1.IO操作的主要函数接口 打开设备:bool open(OpenMode mode) 读取数据:QByteArray read(qint64 maxSize) 写入数据:qint64 write(const QByteArray & byteArray) 关闭设备:void close() IO操作的本质是连续

QT开发(三十四)——QT多线程编程

QT开发(三十四)--QT多线程编程 一.QT多线程简介 QT通过三种形式提供了对线程的支持,分别是平台无关的线程类.线程安全的事件投递.跨线程的信号-槽连接. QT中线程类包含如下: QThread 提供了开始一个新线程的方法    QThreadStorage 提供逐线程数据存储    QMutex 提供相互排斥的锁,或互斥量    QMutexLocker 是一个辅助类,自动对 QMutex 加锁与解锁    QReadWriterLock 提供了一个可以同时读操作的锁    QReadL

第三十四课 二维数组的存储 【项目1-3】

第三十四课 二维数组的存储 项目一[二维数组当函数参数] 定义一个函数来完成对参数数组中元素的求和工作,函数声明如下: [cpp] view plain copy print? int sum(int array[ ][4],int m,int n);  //该函数完成对array数组中的前m行和n列元素求和 在以下程序的基础上,完成对sum函数的定义. [cpp] view plain copy print? #include <stdio.h> int sum(int array[ ][4

[原创]ActionScript3游戏中的图像编程(连载三十四)

2.2.7 关于Photoshop的图层挖空投影 在Photoshop里面,不管图层挖空投影的复选框是否处于勾选状态,显示出来的效果都几乎没有任何差别.那这个挖空的作用何在?不急,我们看看Flash里的挖空选项. Flash里的挖空很明显,图 2.23展示了挖空后的效果. 图 2.23 Flash的挖空投影 Flash的投影滤镜把常规显示的像素颜色都掏空了.从挖空的现象和隐藏对象的字面意思来看,两者含义似乎一致,但结果却出乎我的意料.(图 2.24) 图 2.24 隐藏对象 可见,投影与文字本身

第三十四天 我为集成平台狂(七)-步履轻盈的JQuery(五)

7月13日,晴."别院深深夏席清,石榴开遍透帘明. 树阴满地日当午,梦觉流莺时一声." 在JQuery的法则里,风格重于一切,IT牛人们从来没有把自己束缚在一张乏味的表单上,怀着对JavaScript的理解,在不断的尝试中寻求着转化的灵感. 大多购票.旅游网站上都提供了一个城市和日期输入查询的功能.用户在输入框中只需输入城市的拼音或者简称就可以弹出相关城市的名称,选择日期时则是出现一个月的日历控件,只需点选日期即可,整个操作一目了然. 本文讲解如何使用jQuery实现城市查询和日历显示

ActionScript3游戏中的图像编程(连载三十四)

2.2.7 关于Photoshop的图层挖空投影 在Photoshop里面,不管图层挖空投影的复选框是否处于勾选状态,显示出来的效果都几乎没有任何差别.那这个挖空的作用何在?不急,我们看看Flash里的挖空选项. Flash里的挖空很明显,图 2.23展示了挖空后的效果. 图 2.23 Flash的挖空投影 Flash的投影滤镜把常规显示的像素颜色都掏空了.从挖空的现象和隐藏对象的字面意思来看,两者含义似乎一致,但结果却出乎我的意料.(图 2.24) 图 2.24 隐藏对象 可见,投影与文字本身

Welcome to Swift (苹果官方Swift文档初译与注解三十四)---241~247页(第五章-- 函数)

In-Out Parameters (全局参数) 像前面描述的参数变量,只能在函数体内进行修改,如果你需要函数修改的它的参数值,并且希望这些改变在函数调用结束后仍然有效,可以定义使用全局参数. 定义全局参数使用关键字inout,全局参数的值在函数调用的时候进行传递,在函数体内进行修改,最后函数回传新值来替换之前的值. 全局参数在函数中,只能使用变量来当作参数,不能使用常量或者文本值作为参数.因为常量或者文本值不可以被修改.为了表明参数变量可以被修改,要在变量名的前面直接添加一个& 符号. 注意