掌握Thinkphp3.2.0----SQL查询

Posted GOFighting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了掌握Thinkphp3.2.0----SQL查询相关的知识,希望对你有一定的参考价值。

首先,先谈一下对查询的理解:查询的对象是数据库中的数据表,一个或多个;查询的限制就是各种条件或要求;查询的结果=表对象+限制(条件)。

对数据表的操作(CRUD)查询是最复杂也是最关键的一步!\'SELECT * FROM  WHERE [condition]\',WHERE是对基本的限制条件。

对象即数据库中数据表是不用变化的,需要变化的是查询的条件。

条件的形式

  1.基本形式----字符串形式。万能形式,查询不安全(不会自动添加安全符号``),就相当于在前边的sql语句上连缀后边的条件。

1 $user = M(\'User\');
2 //字符串的查询条件
3 $where_str = \'`this is a string`\';
4 //显示测试结果
5 $result = $user -> where($where_str) -> select();
6 var_dump($result);

 结果:

  可见就是在WHERE之后的条件中写入该字符串,也就该形式可以实现所有的WHERE关键字的SQL查询。

例如:

  

1         $user = M(\'User\');
2         //字符串的查询条件
3         $where_str = \'id=1\';
4         //显示测试结果
5         $result = $user -> where($where_str) -> select();
6         var_dump($result);    

 

结果:

  

  2.数组形式条件。还是针对WHERE查询,就是把WHERE查询的条件分开,例如id=1条件,分成 id 和 1两部分,写入数组id做键,1做值,另外写入控制符。

数组是比较推荐的形式,这里是数组形式,值是字符串或整型或浮点

例子:

1  $user = M(\'User\');
2 //数组形式的条件
3 $condition[\'id\'] = array(1);
4 //显示测试结果
5 $result = $user -> where($condition) -> select();
6 var_dump($result);    

 

结果:

示例

 

 3.对象形式的条件。和数组很像,只是更换了数据的载体为对象(stdClass空对象,php程序提供)

  4.表达式查询。实际就是来更改条件中运算符的。根据运算符的不同可能有不同的结构,这种形式相对灵活,可以写出很复杂的SQL查询语句,不行不是还有一个自定义吗。

基本结构:      查询表达式格式:$map[\'字段名\'] = array(\'表达式\',\'查询条件\');---数组形式,值是数组.查询条件可以是数组,只是对有的表达式没有作用,比如EQ

LIKE/NOTLIKE

 

BETWEEN/NOT BETWEEN

1 $user = M(\'User\');
2 //表达式形式
3 // $map[\'id\'] = array(\'BETWEEN\',\'1,10\');这两种形式一样
4 $map[\'id\'] = array(\'BETWEEN\',array(1,10));
5 
6 $result = $user -> where($map) -> select();
7 var_dump($result);

 

IN/NOTIN-----IN是IN,BETWEEN是BETWEEN!

$user = M(\'User\');
//表达式形式
$map[\'id\'] = array(\'BETWEEN\',\'1,10\');
// $map[\'id\'] = array(\'IN\',array(1,6));这两种形式一样

$result = $user -> where($map) -> select();
var_dump($result);

 

 自定义形式:有点像连缀

还有几种其他的形式,多写,找到合适简便就可以了

快捷方式  | &  

  

等价效果:

 1 $user = M(\'User\');
 2         //快捷方式
 3         $map[\'id&user\'] = 1;
 4         // 等价于
 5         // $map[\'id\'] = 1;
 6         // $map[\'user\'] = 1;
 7         // $map[\'_logic\'] = \'AND\';
 8         // 或等价于
 9         // $condition = \'id=1 AND user=1\';
10         $result = $user -> where($map) -> select();
11         var_dump($result);

 

和表达式结合:

1 $user = M(\'User\');
2         //快捷方式
3         $map[\'id&user\'] = array(array(\'NEQ\',1),array(\'EQ\',1),\'_multi\'=>true);
4         $result = $user -> where($map) -> select();
5         var_dump($result);

 

结果:

SELECT * FROM `think_user` WHERE ( (`id` <> 1) AND (`user` = 1) ) [ RunTime:0.001000s ]感觉这是最好的

 还有,不一定是连个字段,可以是3个或多个字段

 再:

$map[\'_string\'] = \'\';连缀字符串,可以连接到其他条件上

$map[\'query\'] = \'\';URL模式,比较方便

$map[\'_complex\'] = \'\';被覆盖的时候使用

 1 $user = M(\'User\');
 2         //组合查询
 3         /*     $map[\'id\'] = 1;
 4             $map[\'_string\'] = \'user=1 AND email like 3\';继续连接字符串形式的条件
 5         */
 6         /*     $map[\'id\'] = 1;
 7             $map[\'_query\'] = \'user=1&email=2\';//貌似运算符只能是=
 8         */
 9         /*     $where[\'id\'] = 1;
10             $map[\'id\'] = 1;
11             $map[\'_complex\'] = $where;
12             $map[\'_logic\'] = \'OR\';
13         */        
14         $result = $user -> where($map) -> select();
15         var_dump($result);

 

统计查询:$user->count();

动态查询: getById()  getFieldByUser();

SQL原生

query();读

excute();写

 

以上是关于掌握Thinkphp3.2.0----SQL查询的主要内容,如果未能解决你的问题,请参考以下文章

java eclipse 作业代写代做eclipse实验

java程序代码代写代写tree数据结构作业

网络爬虫作业代码代写代实现代做爬虫程序

抖音企业代运营,杭州抖音代运营 抖音推荐系统背后的算法

代写数据库表设计代写SQL语句代做数据库项目代做MySQL数据库

GitGit 标签使用 ( 查询哈希码 | 创建标签 git tag v1.0 | 查询标签 git tag | 查询标签信息 git show v1.0 | 创建标签并指定说明 | 删除标签 )(代