zoukankan      html  css  js  c++  java
  • ThinkPHP可以支持直接使用字符串作为查询条件

    ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用数组或者对象来作为查询条件,因为会更加安全。

    大理石平台哪家好

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

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

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

    最后生成的SQL语句是

    1. SELECT * FROM think_user WHERE type=1 AND status=1

    采用字符串查询的时候,我们可以配合使用字符串条件的安全预处理机制。

    二、使用数组作为查询条件

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

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

    最后生成的SQL语句是

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

    如果进行多字段查询,那么字段之间的默认逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的逻辑判断,通过使用 _logic 定义查询逻辑:

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

    最后生成的SQL语句是

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

    这里以stdClass内置对象为例:

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

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

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

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

    使用数组和对象方式查询的时候,如果传入了不存在的查询字段是会被自动过滤的,例如:

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

    因为数据库的test字段是不存在的,所以系统会自动检测并过滤掉$condition['test'] = 'test'这一查询条件。

    如果是3.2.2版本以上,当开启调试模式的话,则会抛出异常,显示:错误的查询条件

  • 相关阅读:
    测试工具Fiddler(一)—— 基础知识
    测试必备之Java知识(四)—— 线程相关
    【猫狗数据集】保存训练模型并加载进行继续训练
    【colab pytorch】保存模型
    【python-leetcode90-子集】子集Ⅱ
    【猫狗数据集】定义模型并进行训练模型
    【colab pytorch】数据处理
    hadoop之java.io.IOException: Got error, status message , ack with firstBadLink as 192.168.*.* 50010
    hadoop完全分布式之集群时间同步
    hadoop之完全分布式集群配置(centos7)
  • 原文地址:https://www.cnblogs.com/furuihua/p/11811070.html
Copyright © 2011-2022 走看看