文档章节

ThinkPHP查询数据与CURD

qeyser
 qeyser
发布于 2016/04/18 01:29
字数 1464
阅读 22
收藏 0

一、创建连接

在配置文件中使用如下配置:

//mysql 定义
    /*
      'db_type' => 'mysql',
      'db_host' => 'localhost',
      'db_user' => 'root',
      'db_pwd' => '',
      'db_port' => 3306,
      'db_name' => 'test', */
    //PDO专用定义
    //PDO连接方式
    'DB_TYPE' => 'mysql', // 数据库类型
    'DB_USER' => 'root', // 用户名
    'DB_PWD' => '', // 密码
    'DB_PREFIX' => '', // 数据库表前缀
    'DB_DSN' => 'mysql:host=localhost;dbname=test;charset=UTF8',

二、查询数据

1、基本查询的三种方式:

//select全部显示,find显示一条
$user = M('User');
//-------字符串方式
var_dump($user->where('id=1 AND user="蜡笔小新"')->select());
//-------数组索引方式 默认是AND(高效)
$condition['id'] = 2;
$condition['username'] = 'llicat';
//改变AND为OR
$condition['_logic'] = 'OR';
//-------对象条件查询  PHP内置类在根目录下找   '\'
$condition = new \stdClass();
$condition->id = 1;
$condition->username='admin';
$condition->_logic ='or';
var_dump($user->where($condition)->select());

2、表达式查询:eq,neq,gt等

$user = M('user');
$map['id']= array('eq','1,3');//eq,neq,gt,egt,lt...具体看手册  eq等于  等于1和2?再加一个数组的形式不能用   用逗号 !1,3
$map['username']=array('like','%l%');//notlike 不用空格
$map['username']=array('like',array('%l%','%a%'),'and');//最后一个参数不写默认是OR
//区间查询
$map['id']=array('between','2,4');
$map['id']=array('between',array('1','3'));//或者这样  not between 需要空格
$map['id']=array('in','2,4');//array也行 not in空格
//EXP:自定义
$map['id'] = array('exp','=1 AND username="llicat"');
$map['id'] = array('exp','in (1,2,3)');
$map['username'] = array('exp','="123"');
$map['_logic']='OR';
var_dump($user->where($map)->select());

3、快捷查询:

$user = M('user');
$map['username|password'] = 'llicat';// 相同查询条件|:or  &:and
$map['username&password'] = array('llicat','123456','_multi'=>TRUE);//multi设置一一对应,不然username会对应多个
$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);//和表大会组合 并且可以多个
var_dump($user->where($map)->select());

4、区间查询

$user = M('user');
$map['id'] = array(array('gt',1),array('lt',3));//用AND:不加第三个参数。   用OR:第三个参数 'OR'
var_dump($user->where($map)->select());

5、组合查询(索引数组的扩展)

//字符串查询(_string) 复合查询(_complex) 请求字符串查询(_query)
$user = M('user');
//-------------字符串查询扩展
$map['id'] = array('eq',1);
$map['_string'] = 'username="llicat" AND password="123456"';//这种方式不太安全,生成的SQL语句中字段名没反单引号
$map['_logic'] = 'OR';//OR
//-------------请求字符串查询扩展
$map['id'] = array('eq',1);
$map['_query'] = 'username=llicat&password=123456';//有反单引号,较安全,推荐,也可以加_logic
//-------------复合查询扩展
$map['id'] = array('eq',1);
$where['id'] = 2;
$map['_complex'] = $where;
$map['_logic'] ='OR';
var_dump($user->where($map)->select());

6、统计查询:用于统计sum、avg、min、max、count等

var_dump($user->count());//括号里写'email'这种选择某个字段,如果该字段可为空,且有空,则不计算空
var_dump($user->min('id'));//sum、avg等等

三、create方法

#create创建数据对象,并没有添加数据或者添加表,结果就是提交过来的键值对
#创建完成后的数据可以直接读取或者修改利用$user->username
#保存在内存中,并没有实际写入到数据库中,直到使用add 或者save 方法才会真正写入数据库。
$user = M('User');
//--------直接create空,显示提交过来表单的数据,且默认为POST,接收get,create($_GET)但是create只获取数据库表与表单对应的信息,POST获取所有
var_dump($user->create());
//--------数据覆盖
$data['username']='llicat';
$data['password']='123456';
var_dump($user->create($data));
//--------直接用_POST接收
$data['username']=$_POST['username'];
$data['password']=$_POST['password'];
$data['date']=date('Y-md H:i:s');
var_dump($user->create($data));
//--------手工获取数据,从对象创建新的数据对象
$data = new \stdClass();
$data->username = $_POST['username'];
$data->password = $_POST['password'];
$data->date = date('Y-md H:i:s');
var_dump($user->create($data));
//--------create俩个参数,第一个参数必须制定POST或者GET,第二个为操作,insert或者update
//没指定第二个参数时,根据数据源是否包含主键判断修改或者新增,类似merge into
var_dump($user->create($_GET));
var_dump($user->create($_POST,  \Think\Model::MODEL_INSERT));
//--------支持连贯操作field过滤、validate数据自动验证、auto数据自动完成、token令牌验证,与域有关
//限制字段
var_dump($user->field('username')->create());//只显示username
//在模型中限制
$user = D('User');
var_dump($user->create());

四、数据写入,add

//=================================数据写入=================================
$user = M('User');
$data['username']='heiheihei';
$data['password']='xixixi';
$user->add($data);
//----------------------结合create
$user = M("User"); 
//接收表单数据+创建的数据
$data = $user->create();
$data['date']=date('Y-m-d H:i:s');
$user->add($data);
//----------------------连贯操作data,可以用于写入多个对象
$user->data($data)->add();
//或者可以用url格式
$data ='username=heiheihei&password=xixixi';
$user->data($data)->add();

五、数据查询,select

$user=M('user');
//显示所有
var_dump($user->select());
//显示第一条
var_dump($user->find());
//得到指定字段,且只显示一个
var_dump($user->getField('username'));
//显示该字段的所有,不只显示一个
var_dump($user->getField('username',true));
//显示多个字段,直接会显示所有,重复的会被屏蔽!
var_dump($user->getField('username,password'));
//指定分割符号,第二个参数
var_dump($user->getField('id,username,password',':'));
//限制limit 第二个参数
var_dump($user->getField('id,username,password',2));

六、更新数据,save

$user=M('user');
$data['username'] = 'oooooooooooo';
$data['password'] = 'xxxxxxxxxxxx';
$map['id']=4;
$user->where($map)->save($data);
//默认主键为条件
$data['id']=5;
$data['username'] = 'tttttt';
$data['password'] = 'qqqqqq';
$user->save($data);
//结合create,id也表单传过来时
$user->create();
$user->save();//返回值0:没修改,1:返回成功
//修改某一个字段值
$map['id']=1;
$user->where($map)->setField('username','heihei');
//统计累加累减 count是一个为int的字段名
$map['id']=1;
$user->where($map)->setInc('count',1);//累加
$user->where($map)->setDec('count',1);//累减

七、删除数据,delete

$user=M('user');
//默认根据主键删除
$user->delete(6);
//----------
$map['id']=6;
$user->where($map)->delete();
//批量删除多个,根据主键要加引号
$user->delete('1,2,3');
//删除多个条件的
$map['count']=0;
$user->where($map)->order(array('id'=>'DESC'))->limit(1)->delete();
//删除所有数据,谨慎  1或者true?回头可以试试
echo $user->where('1')->delete();//成功返回1 ,没删返回0

八、

字段映射:表单名和数据库的字段名不对称,用create不能直接获取,需要用模块做处理

模块中:

//字段映射
protected  $_map = array(
    'yonghuming'=>'username',
    'mima'=>'password',
);


© 著作权归作者所有

共有 人打赏支持
qeyser
粉丝 1
博文 9
码字总数 3263
作品 0
喀什
私信 提问
thinkphp开发的框架的简单介绍

  说起来现在的互联网时代中用到thinkphp的地方也是很多的,这也是一项技术活,开发框架也是比较有难度的,下面就给大家简单地介绍一下。   ThinkPHP是一个免费开源的,快速、简单的面向...

孙智绘
2012/06/28
40
0
ThinkPHP 查询数据 select(findAll) 方法

ThinkPHP 查询数据 ThinkPHP 查询数据主要提供以下几类查询: select:普通查询,同 findAll() 方法 find:取得符合查询条件的一条记录 getBy动态查询:根据某个字段取得符合查询条件的一条记...

WangEven
2012/05/10
0
0
适合PHP新手入门上手的开发框架-thinkphp

ThinkPHP是一个开源的PHP框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想...

big_cat
2013/06/15
0
0
ThinkPHP的网友评论

ThinkPHP 是一个快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发 布,并且永久免费使用,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。借鉴了国外很多优秀的框架和...

红薯
2009/12/11
1K
7
ThinkPHP where方法:设置查询或操作条件

ThinkPHP where() ThinkPHP where()方法是 Model 类内置方法,用于设置数据库查询或者更新、删除等操作条件。 where 方法支持以字符串、数组和对象方式来设置条件,该方法不能独立使用,必须...

WangEven
2012/05/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
5
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部