• ThinkPHP_SQL(1)查询语言


    推荐使用索引数组或者对象来作为查询条件,因为会更加安全。

    一、使用字符串作为查询条件

    这是最传统的方式,但是安全性不高,例如:

    $User = M("User"); // 实例化User对象
    $User->where('type=1 AND status=1')->select(); 

    最后生成的SQL语句是

    SELECT * FROM think_user WHERE type=1 AND status=1
     
    二、使用数组作为查询条件

    这种方式是最常用的查询方式,例如:

    $User = M("User"); // 实例化User对象
    $condition['name'] = 'thinkphp';
    $condition['status'] = 1;
     // 把查询条件传入查询方法
    $User->where($condition)->select(); 

    最后生成的SQL语句是

    SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

    多字段查询

    字段之间的默认逻辑关系是 逻辑与 AND,

    但是用下面的规则可以更改默认的逻辑判断,通过使用 _logic 定义查询逻辑:

    $User = M("User"); // 实例化User对象
    $condition['name'] = 'thinkphp';
    $condition['account'] = 'thinkphp';
    $condition['_logic'] = 'OR';
     // 把查询条件传入查询方法
    $User->where($condition)->select(); 

    最后生成的SQL语句是

    SELECT * FROM think_user WHERE `name`='thinkphp' OR `account`='thinkphp'
     
    三、使用对象方式来查询

    这里以stdClass内置对象为例:

    $User = M("User"); // 实例化User对象
     // 定义查询条件
    $condition = new stdClass(); 
    $condition->name = 'thinkphp'; 
    $condition->status= 1; 
    $User->where($condition)->select(); 

    最后生成的SQL语句和上面一样

    SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

    使用对象方式查询和使用数组查询的效果是相同的,并且是可以互换的,大多数情况下,我们建议采用数组方式更加高效。

    表达式查询

    上面的查询条件仅仅是一个简单的相等判断,

    可以使用查询表达式支持更多的SQL查询语法,

    也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

    $map['字段名'] = array('表达式','查询条件');
     
    表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
    bds

        示例如下:
        EQ :等于(=)
        例如:

    $map['id']  = array('eq',100);

        和下面的查询等效

    $map['id']  = 100;
     
    表示的查询条件就是:
    id = 100
     

       [NOT] LIKE: 同sql的LIKE
        例如:

    $map['name'] = array('like','thinkphp%');

        查询条件就变成 name like 'thinkphp%'

        如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:

    'DB_LIKE_FIELDS'=>'title|content'

        的话,使用

    $map['title'] = 'thinkphp';

        查询条件就会变成 title like '%thinkphp%'


        支持数组方式,例如

    $map['a'] =array('like',array('%thinkphp%','%tp'),'OR');
    $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');

        生成的查询条件就是:

    (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
  • 相关阅读:
    2019/9/10
    2019/9/9
    软件课程设计(21)
    软件课程设计(20)
    软件课程设计(19)
    软件课程设计(18)
    软件课程设计(17)
    软件课程设计(16)
    数风流人物,还看今朝
    峰回路转二十四天
  • 原文地址:https://www.cnblogs.com/StyxLord/p/5240781.html
Copyright © 2020-2023  润新知