文档章节

ThinkPHP查询数据与CURD

qeyser
 qeyser
发布于 2016/04/18 01:29
字数 1464
阅读 21
收藏 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 查询数据 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 where方法:设置查询或操作条件

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

WangEven
2012/05/10
0
0
ThinkPHP3.0新特性: 快捷查询

新版增加了快捷查询方式,可以进一步简化查询条件的写法,例如: 一、实现不同字段相同的查询条件 $User = M("User"); // 实例化User对象 $map['name|title'] = 'thinkphp'; // 把查询条件传...

岭南六少
2012/02/27
0
0
网站安全检测 漏洞检测 对thinkphp通杀漏洞利用与修复建议

thinkphp在国内来说,很多站长以及平台都在使用这套开源的系统来建站,为什么会这么深受大家的喜欢,第一开源,便捷,高效,生成静态化html,第二框架性的易于开发php架构,很多第三方的插件...

网站安全
09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android WebView制作简易浏览器

最终效果 先创建一个WebView控件,其他的就是通过线性布局在上方加入网址输入框和两个按钮 <WebView android:id="@+id/act_webview_wv" android:layout_width="ma...

lanyu96
刚刚
0
0
解决MacOS升级系统Sierra到Mojave后git报错

错误信息 升级MacOS Sierra到Mac Mojave后执行git命令报错: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/......

阿dai
1分钟前
0
0
兄弟连区块链教程以太源码分析CMD深入分析(一)

cmd包分析 cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 geth包下面的: func init() { // Initialize the...

兄弟连区块链入门教程
3分钟前
0
0
Titan Framework MongoDB深入理解1

在TitanFrameWork框架中,已经集成了MongoDB的各个功能,现在我们对框架内部的一些重要类进行分析与解读。 MongoDBConverter 在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作...

云季科技
8分钟前
0
0
SpringBoot集成Quartz

SpringBoot集成Quartz 什么是Quartz Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smalle......

Grittan
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部