Thinkphp3.2 关于数据库的基本操作

	// 数据库字段 连贯操作方法~~!!  limit分页   select  查询!!
	$Model->field('user.name,role.title')->table('think_user'=>'user','think_role'=>'role')->limit(10)->select();	

	// 数据表别名 alias表别名
	$Model=M('User');
	$Model->alias('a')->join('__DEPT__ b ON b.user_id= a.id')->select();
	SELECT * FROM think_user a INNER JOIN think_dept b ON b.user_id= a.id

	// data方法 对数据进行直接赋值  add 方法
	$Model = M('User');
	$data['name'] = '流年';
	$data['email'] = '[email protected]';
	$Model->data($data)->add();

	// field 字段查询  select 可以在   field 方法中直接使用函数
	$Model->field('id,title,content(count)')->select(); 
	// 。。 可以支持数组
	$Model->field(array('id','title','content'))->select();
	// 数组定义可以给某些字段定义别名  'nickname'=>'name'
	$Model->field(array('id','nickname'=>'name'))->select();

	// 查询出来所有字段 field()
	$Model->select();
	$Model->field()->select();
	$Model->field('*')->select();
	// 如果希望获取数据库中的某一个字段值 只获取一个就直接在后面加上true
	$Model->field('user_id,content',true)->select();
	//或者用	
	$Model->field(array('user_id','content'),true)->select();
	// field 和 create 结合使用可以防止sql语句注入 tp3.2内置防sql注入	
	$Model->field('title,email,content')->create();		
	// 同样的,field也可以结合add和save方法,进行字段过滤,例如:
	$Model->field('title,email,content')->save($data);
	// 如果data数据中包含有title,email,content之外的字段数据的话,也会过滤掉。

	// order 方法属于连贯操作 用于对操作的结果排序  desc降序
	$Model->where('status=1')->order('id desc')->limit(5)->select();
	// 如果字段和mysql字段有冲突 用数组方式代替
	$Model->where('status=1')->order(array('order','id'=>'desc'))->limit(5)->select();

	// 获取需要满足要求的客户   limit方法 field字段  where条件   limit每页显示条数
	$User=M('User');
	$User->where('status=1')->field('id,name')->limit(10)->select();
	// 用于文章分页查询是limit方法比较常用的场合
	$Article = M('Article');
	$Article->limit('10,25')->select();
	// 或者用
	$Article->limit(10,25)->select();
	// 表示查询文章数据,从第10行开始的25条数据

	// page方法  可以自动计算每个分页的limit方法  一共显示几页。。
	$Model->limit(5)->page(5)->select();

	// Group分组操作
	$this->field('username,max(score)')->group('user_id')->select();

	// Join 连贯查询 ON类似于where条件  left join  right join 	inner join 三种类型
	$Model = M('Artist');
	$Model->join('think_work ON think_artist.id = think_work.artist_id')->join('think_card ON think_artist.card_id = think_card.id')->select();

	// Cache 方法用于查询缓存  连贯操作方法之一
	$Model = M('User');
	$Model->where('id=5')->cache(true)->find();
	// 第一次查询结果会被缓存,第二次查询相同的数据的时候就会直接返回缓存中的内容,而不需要再次进行数据库查询操作。

	// comment 用于查询在生成Sql语句中添加注释内容
	$this->comment('查询考试前十名分数')->field('username,score')->limit(10)->order('score desc')->select();
	// 相当于
	SELECT username,score FROM think_score ORDER BY score desc LIMIT 10 /* 查询考试前十名分数 */

	// Token 方法可用于临时关闭令牌验证
	$model->token(false)->create();
	// 即可在提交表单的时候临时关闭令牌验证(即使开启了TOKEN_ON参数)。

	-----------------------------------创建数据对象------------------------------------
	// 实例化User模型
	$User = M('User');
	// 根据表单提交的POST数据创建数据对象
	$User->create();------//获取form表单提交的数据 ID name sex city 等等

	// Create方法支持从其它方式创建数据对象,例如,从其它的数据对象,或者数组等
	$data['name'] = 'ThinkPHP';
	$data['email'] = '[email protected]';
	$User->create($data);
	-------------------------------增加(add)-----------------------------------------
	// 或者 如果在add之前已经创建数据对象的话(例如使用了create或者data方法),add方法就不需要再传入数据了。
	$User = M("User"); // 实例化User对象
	// 根据表单提交的POST数据创建数据对象
	if($User->create()){
	    $result = $User->add(); // 写入数据到数据库 
	    if($result){
	        // 如果主键是自动增长型 成功后返回值就是最新插入的值
	        $insertId = $result;
	    }
	}
	连贯操作	作用	支持的参数类型
	table	用于定义要操作的数据表名称	字符串和数组
	data	用于指定要写入的数据对象	数组和对象
	field	用于定义要写入的字段	字符串和数组
	relation	用于关联查询(需要关联模型支持)	字符串
	validate	用于数据自动验证	数组
	auto	用于数据自动完成	数组
	filter	用于数据过滤	字符串
	scope	用于命名范围	字符串、数组
	bind	用于数据绑定操作	数组
	token	用于令牌验证	布尔值
	comment	用于SQL注释	字符串
	fetchSql	不执行SQL而只是返回SQL	布尔值
	-------------------------------读取(select)-----------------------------------------
	$User = M("User"); // 实例化User对象
	// 查找status值为1name值为think的用户数据   find 方法 查询单条语句
	$data = $User->where('status=1 AND name="thinkphp"')->find();
	var_dump($data);//输出数组(如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功返回一个一维数组)
	array (size=3)
  	'name' => string 'thinkphp' (length=8)
	'email' => string '[email protected]' (length=18)
	'status'=> int 1
	where	用于查询或者更新条件的定义	字符串、数组和对象
	table	用于定义要操作的数据表名称	字符串和数组
	alias	用于给当前数据表定义别名	字符串
	field	用于定义要查询的字段(支持字段排除)	字符串和数组
	order	用于对结果排序	字符串和数组
	group	用于对查询的group支持	字符串
	having	用于对查询的having支持	字符串
	join	用于对查询的join支持	字符串和数组
	union	用于对查询的union支持	字符串、数组和对象
	distinct	用于查询的distinct支持	布尔值
	lock	用于数据库的锁机制	布尔值
	cache	用于查询缓存	支持多个参数
	relation	用于关联查询(需要关联模型支持)	字符串
	result	用于返回数据转换	字符串
	scope	用于命名范围	字符串、数组
	bind	用于数据绑定操作	数组
	comment	用于SQL注释	字符串
	fetchSql	不执行SQL而只是返回SQL	布尔值
	-------------------------------更新(save)-----------------------------------------
	// save 方法更新
	$User = M("User"); // 实例化User对象
	// 要修改的数据对象属性赋值
	$data['name'] = 'ThinkPHP';
	$data['email'] = '[email protected]';
	$User->where('id=5')->save($data); // 根据条件更新记录

	// 对象方式修改
	$User = M("User"); // 实例化User对象
	// 要修改的数据对象属性赋值
	$User->name = 'ThinkPHP';
	$User->email = '[email protected]';
	$User->where('id=5')->save(); // 根据条件更新记录
	连贯操作	作用	支持的参数类型
	where	用于查询或者更新条件的定义	字符串、数组和对象
	table	用于定义要操作的数据表名称	字符串和数组
	alias	用于给当前数据表定义别名	字符串
	field	用于定义允许更新的字段	字符串和数组
	order	用于对数据排序	字符串和数组
	lock	用于数据库的锁机制	布尔值
	relation	用于关联更新(需要关联模型支持)	字符串
	scope	用于命名范围	字符串、数组
	bind	用于数据绑定操作	数组
	comment	用于SQL注释	字符串
	fetchSql	不执行SQL而只是返回SQL	布尔值
	--------------------------------删除(delete)------------------------------------------
	// 删除条件主要取决于ID 字段如果是唯一的话 也可以按照其他的字段进行删除  可以使用order 排序的方法来进行删除
	$User = M("User"); // 实例化User对象
	$User->where('id=5')->delete(); // 删除id为5的用户数据
	$User->delete('1,2,5'); // 删除主键为1,2和5的用户数据
	$User->where('status=0')->delete(); // 删除所有状态为0的用户数据
	连贯操作	作用	支持的参数类型
	where	用于查询或者更新条件的定义	字符串、数组和对象
	table	用于定义要操作的数据表名称	字符串和数组
	alias	用于给当前数据表定义别名	字符串
	order	用于对数据排序	字符串和数组
	lock	用于数据库的锁机制	布尔值
	relation	用于关联删除(需要关联模型支持)	字符串
	scope	用于命名范围	字符串、数组
	bind	用于数据绑定操作	数组
	comment	用于SQL注释	字符串
	fetchSql	不执行SQL而只是返回SQL	布尔值
	-------------------------------分割线------------------------------
	$this->show('要输出的话');
	$this->display("要跳转的页面");//页面和控制器的文件名一样的情况下可以直接写入空。
	$this->assign("要传输的变量");	

你可能感兴趣的:(Thinkphp,Thinkphp,TP3.2数据库操作,数据库增删改查)