thinkPHP 写了where条件生成出来的sql却没有where,这到底是为什么
发布网友
发布时间:2022-04-10 07:23
我来回答
共3个回答
懂视网
时间:2022-04-10 11:44
Where 条件表达式格式为:
$map[‘字段名‘] = array(‘表达式‘, ‘操作条件‘);
其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:
ThinkPHP运算符
与 SQL运算符
对照表 |
TP运算符 | SQL运算符 | 例子 | 实际查询条件 |
eq | = | $map[‘id‘] = array(‘eq‘,100); | 等效于:$map[‘id‘] = 100; |
neq | != | $map[‘id‘] = array(‘neq‘,100); | id != 100 |
gt | > | $map[‘id‘] = array(‘gt‘,100); | id > 100 |
egt | >= | $map[‘id‘] = array(‘egt‘,100); | id >= 100 |
lt | < | $map[‘id‘] = array(‘lt‘,100); | id < 100 |
elt | <= | $map[‘id‘] = array(‘elt‘,100); | id <= 100 |
like | like | $map<‘username‘> = array(‘like‘,‘Admin%‘); | username like ‘Admin%‘ |
between | between and | $map[‘id‘] = array(‘between‘,‘1,8‘); | id BETWEEN 1 AND 8 |
not between | not between and | $map[‘id‘] = array(‘not between‘,‘1,8‘); | id NOT BETWEEN 1 AND 8 |
in | in | $map[‘id‘] = array(‘in‘,‘1,5,8‘); | id in(1,5,8) |
not in | not in | $map[‘id‘] = array(‘not in‘,‘1,5,8‘); | id not in(1,5,8) |
and(默认) | and | $map[‘id‘] = array(array(‘gt‘,1),array(‘lt‘,10)); | (id > 1) AND (id < 10) |
or | or | $map[‘id‘] = array(array(‘gt‘,3),array(‘lt‘,10), ‘or‘); | (id > 3) OR (id < 10) |
xor(异或) | xor | 两个输入中只有一个是true时,结果为true,否则为false,例子略。 | 1 xor 1 = 0 |
exp | 综合表达式 | $map[‘id‘] = array(‘exp‘,‘in(1,3,8)‘); | $map[‘id‘] = array(‘in‘,‘1,3,8‘); |
补充说明
同 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。
between、 in 条件支持字符串或者数组,即下面两种写法是等效的:
$map[‘id‘] = array(‘not in‘,‘1,5,8‘);
$map[‘id‘] = array(‘not in‘,array(‘1‘,‘5‘,‘8‘));
exp 表达式
上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。
exp 不仅用于 where 条件,也可以用于数据更新,如:
$Dao = M("Article");
// 构建 save 的数据数组,文章点击数+1
$data[‘id‘] = 10;
$data[‘counter‘] = array(‘exp‘,‘counter+1‘);
// 根据条件保存修改的数据
$User->save($data);
tp框架where条件查询数据库
标签:补充 silver 自己 str 微软雅黑 大小写 counter order 一个
热心网友
时间:2022-04-10 08:52
在thinkphp的查询中是找不到你这种查询方式的,一般有查询方式有:
1、$map
$map['user_id'] = array('eq', $_GET['id'];
$model->where($map)->select();
2、$where
$where['user_id'] = $_GET['id'];
$model->where($where)->select();
3、表达式
$model->where('user_id = '.$_GET['id'])->select();
热心网友
时间:2022-04-10 10:10
where("user_id = $_GET['id']")
thinkPHP 写了where条件生成出来的sql却没有where,这到底是为什么
在thinkphp的查询中是找不到你这种查询方式的,一般有查询方式有:1、$map map['user_id'] = array('eq', $_GET['id'];$model->where($map)->select();2、$where where['user_id'] = $_GET['id'];$model->where($where)->select();3、表达式 model->where('user_id = '.$_...
thinkphp的查询语句->query()和->where怎么连用起来?
使用query的话 直接将sql语句写入 query()内就可以了 ->where()是数据操作的时的条件、
thinkphp的where条件为在一个范围又不等于怎么写
回答:很简单的例如; $sql=$实例化的表名->where(" $a >1 and $a <10 and $a !=$c")->selsect();
thinkphp update更新数据问题
1、在thinkphp 5当中,如果需要更新某个字段的值可以这样写:Db::table('think_user') ->where('id', 1) ->update([ 'login_time' => ['exp','now()'], 'login_times' => ['exp','login_times+1'],]);或:Db::table('think_user')->where('id',1)->setFiel...
ThinkPHP中M方法生成语句where条件自动多加了Id
挺多ThinkPHP访问数据库的问题是缓存引起的。清掉Runtime/data/_fields试试。
thinkphp 中where条件怎么使用or
where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。我觉得后盾人还不错,有时间的话,你可以去看看,会有不错的效果哦 ...
thinkphp 里sql 语句如何解读???
这个不是原生写法,这是tp固有的写法,里面对语句做了封装,就是查询fields表里条件是model为空或其他条件符合的值。明白了吧!
thinkphp一条WHERE查询的写法
where['id'] = array('neq','5');$where['age'] = array('egt','20');$map['id'] = array('gt','15');$map['age'] = array('lt','18');$where['_logic'] = 'OR';$map['_complex'] = $where;试试 望采纳 Thx ...
在thinkphp框架中如何防止sql注入
其次,查询构造器是ThinkPHP中另一个重要的防SQL注入工具。查询构造器提供了一种链式调用的方式来构建SQL语句,它内部会自动处理数据的转义和拼接,用户无需直接编写SQL语句。这种方式不仅代码更加简洁易读,而且能够大大减少因手动拼接SQL而产生的注入漏洞。例如,使用where方法来设置查询条件,而不是直接将...
thinkphp 数据库查询怎么查?
最后生成的SQL语句是 1 SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'三、使用对象方式来查询 (这里以stdClass内置对象为例)1 2 3 4 5 6 User = M("User"); // 实例化User对象 // 定义查询条件 condition = new stdClass();condition->name = 'think...