ThinkPHP 条件是一个表里面的两个字段比较
Posted 学知无涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThinkPHP 条件是一个表里面的两个字段比较相关的知识,希望对你有一定的参考价值。
Thinkphp 条件是一个表里面的两个字段比较
今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询。
然后就做了下测试:
比如查询出 手机号就是微信号 的用户:
(1)首先,正常的sql语句应该是这样的:
SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = `weixin`
然后在thinkphp框架中测试:
(2)当where条件是字符串时,肯定是可以的:
M(‘user‘)->where(‘`tel`=`weixin`‘)->field(‘id,name,tel,weixin‘)->select();
字段不加反引号【`】也是可以的:
M(‘user‘)->where(‘tel=weixin‘)->field(‘id,name,tel,weixin‘)->select();
(3)当where条件使用数组时,测试不可以,字段会被当做字符串,比较时转化为了0:
M(‘user‘)->where([‘tel‘=>"`weixin`"])->field(‘id,name,tel,weixin‘)->select();
打印出sql是:SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = 0。
M(‘user‘)->where([‘tel‘=>‘`weixin`‘])->field(‘id,name,tel,weixin‘)->select();
打印出sql是:SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = 0。
M(‘user‘)->where([‘tel‘=>`weixin`])->field(‘id,name,tel,weixin‘)->select();
打印出sql是:SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = null 。
结论:
使用单引号、双引号时,都会被当做字符串,比较时当做0来查询,
不用引号时,当做null来查询,
所以可以使用字符串的查询方式,数组没有查到好的解决办法,
欢迎大家指导!
以上是关于ThinkPHP 条件是一个表里面的两个字段比较的主要内容,如果未能解决你的问题,请参考以下文章
thinkPHP两个表查询:从一个表里取出6条数据的id,再根据这些id去查另一个表里的数据
在sql中select from where 的where的条件是否一定要是表里面的字段
Thinkphp6中where条件中字段与字段比较条件的写法
请问两个oracle数据库,用insert into 学生 select * from 学生 @dblink。发现学生表里面的有一个字段。