Thinkphp的艺术之查询方式的一般使用_03(上)

 

首先回顾一下之前我们见过的几个方法:

  • select:获取某个表所有数据库,并与以数组的方式返回
  • find:获取单条数据,但是需要指定id号
  • getFelid:获取某一个具体字段的信息。可利用where给它传递条件

如下,为获取username字段的值。

Thinkphp的艺术之查询方式的一般使用_03(上)_第1张图片

phpmyadmin查看数据的表,

Thinkphp的艺术之查询方式的一般使用_03(上)_第2张图片

假设我们想要获取ID=4的username的信息,便可以利用where进行连贯操作。

public function show(){
	$m=M('User');
	echo $m->where('id=4')->getField('username');//获取字段为username的字段信息
	$this->display();
    }

访问http://127.0.0.1/thinkphp/index.php/Index/show
Thinkphp的艺术之查询方式的一般使用_03(上)_第3张图片

 

接下来,我们开始今天的讲解,今天主要分为两个方面进行讲解,课程目录如下啦:

一、普通查询方式
    a、字符串
    b、数组
二、表达式查询方式

 

 



一、普通表达式

where添加条件可配合select、find、getFeild

a、字符串

$arr=$m->where("sex=0 and username='gege'")->find();

输出结果:

Thinkphp的艺术之查询方式的一般使用_03(上)_第4张图片

b、数组方式

public function show(){
	$m=M('User');
	$data['sex']=0;
	$data['username']='gege';
	$arr=$m->where($data)->find();
	//$arr=$m->where("sex=0 and username='gege'")->find();
	var_dump($arr);
	$this->display();
    }

输出结果:默认逻辑关系为and

Thinkphp的艺术之查询方式的一般使用_03(上)_第5张图片

如果想要逻辑关系为OR,需要加上

$data['_logic']='or';

输出结果如下:

Thinkphp的艺术之查询方式的一般使用_03(上)_第6张图片

 

二、表达式查询方式

什么是表达式呢?

大于小于等于等等之类的。

EQ 等于
NEQ 不等于
GT 大于
EGT 大于等于
LT 小于
ELT 小于等于
LIKE 模糊查询

假设我们想要所有id>4的数据,该怎么写呢?可利用select查询所有的哦!

	public function show(){
	$m=M('User');
	$data['id']=array('GT',4);
	$arr=$m->where($data)->select();
	var_dump($arr);
	$this->display();
    }

 

Thinkphp的艺术之查询方式的一般使用_03(上)_第7张图片

  • like模糊查询,像……,当一个字段匹配多个通配符时,默认关系为OR;如果想要条件为and时,需要在外面添加一个and。
  • notlike,不像……
	public function show(){
	$m=M('User');
	$data['username']=array('like','%ge');
	$arr=$m->where($data)->select();
	var_dump($arr);
	$this->display();
    }

Thinkphp的艺术之查询方式的一般使用_03(上)_第8张图片

当匹配多个通配符时,默认关系为OR

$data['username']=array('notlike',array('%ge%','%4%'));

Thinkphp的艺术之查询方式的一般使用_03(上)_第9张图片

如果想要条件为and时,需要在外面添加一个and。

$data['username']=array('like',array('%ge%','%2%','%五%'),'and');//如果没有第三个值,默认关系是or关系

 

  • notlike,不像……
$data['username']=array('notlike','%ge%'); //notlike中间没有空格

Thinkphp的艺术之查询方式的一般使用_03(上)_第10张图片

  • between 在……之间(范围连续),例如id在5~7之间的数据。
  • not between不在……之间,需要空格
	public function show(){
	$m=M('User');
	$data['id']=array('between',array(5,7));//id在5~7之间
	$arr=$m->where($data)->select();
	var_dump($arr);
	$this->display();
    }

Thinkphp的艺术之查询方式的一般使用_03(上)_第11张图片

not between不在……之间,需要空格

$data['id']=array('not between',array(5,7));//注意,not 和 between中间一定要有空格
$arr=$m->where($data)->select();

in 在……内(范围不一定连续,可以人为指定),例如id在4,6,7之间

$data['id']=array('in',array(4,6,7));
$arr=$m->where($data)->select();

Thinkphp的艺术之查询方式的一般使用_03(上)_第12张图片

 

三、区间查询

(电脑发生了格式化,因此数据库是新建的,所以检测数来的数据与上面是不一样的!新数据库如下:)
Thinkphp的艺术之查询方式的一般使用_03(上)_第13张图片

 

区间查询顾名思义就是按区间进行查询。

array(array('gt',4),array('lt',10));//默认关系是 and 的关系。

假设我们需要OR的关系, 则需要传入一个OR参数。array(array('gt',4),array('lt',10),'or')

假设我们查询id大于4小于8的数据。,

public function show(){
	$m=M('User');
	$data['id']=array(array('gt',4),array('lt',6));//默认关系是 and 的关系
	$arr=$m->where($data)->select();
	var_dump($arr);
	$this->display();
    }

等价于
 

SELECT * FROM `tp_user` WHERE ( (`id` > 4) AND (`id` < 6) )

输出结果:访问:http://127.0.0.1/thinkphp/Index.php/Index/show

Thinkphp的艺术之查询方式的一般使用_03(上)_第14张图片

or关系
Thinkphp的艺术之查询方式的一般使用_03(上)_第15张图片

username包含2或者五或者gege的数据。(或者需要添加参数OR)

	$data['username']=array(array('like','%2%'),array('like','%五%'),'gege','or');
	$arr=$m->where($data)->select();
	var_dump($arr);

访问:http://127.0.0.1/thinkphp/Index.php/Index/show

Thinkphp的艺术之查询方式的一般使用_03(上)_第16张图片

在不断实践中其实我们可以发现区间查询和上面的数组查询其实是有相似性,类似于数组查询里面的参数换成了数组

 

四、统计查询
 

函数 作用
count 获取个数函数作用
max 获取最大数
min 获取最小数
avg 获取平均数
sum 获取总和

 

  • count:例:统计所有的用户数
$m=M('User');
$c=$m->count();
echo $c;

Thinkphp的艺术之查询方式的一般使用_03(上)_第17张图片

获取username=‘gege’的用户数:

# where形式
$c=$m->where("username='gege1'")->count();

# 数组形式
$data["username"]="gege";
$c=$m->where($data)->count();

Thinkphp的艺术之查询方式的一般使用_03(上)_第18张图片

  • max:例:返回id字段的最大值。
$c = $m->max('id');//返回id字段的最大值
echo $c;

Thinkphp的艺术之查询方式的一般使用_03(上)_第19张图片

 

  • min、sum、avg也类似
	$m=M('User');

	//$c=$m->max('id');//返回id字段的最大值
	//$c=$m->min('id');//返回id字段的最小值
	//$c=$m->avg('id');//返回id字段的平均值
	$c=$m->sum('id');//返回id字段的总和

	echo $c;

 

五、SQL直接查询

  • a、query 主要数处理、读取数据的

        成功返回数据的结果集
        失败返回boolean false

$m=M('User');
$result=$m->query("select *  from tp_user where id >5"); # 返回为真
//$result=$m->query("select *  from tp_user where id >5"); # 返回为假

var_dump($result);

Thinkphp的艺术之查询方式的一般使用_03(上)_第20张图片

  • b、execute ,执行一个操作,如下为用于更新个写入操作

        成功返回影响行数
        失败返回boolean false

$m=M('User');
$result=$m->execute("insert into t_user(`username`) values('ztz3')");//执行插入操作 
var_dump($result);

Thinkphp的艺术之查询方式的一般使用_03(上)_第21张图片

 

 

 

 

 

 

 

 

你可能感兴趣的:(Thinkphp框架的艺术)