码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP 条件是一个表里面的两个字段比较

时间:2019-02-20 14:37:14      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:null   转化   双引号   sel   user   怎么   sql   字符   name   

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 条件是一个表里面的两个字段比较

标签:null   转化   双引号   sel   user   怎么   sql   字符   name   

原文地址:https://www.cnblogs.com/gyfluck/p/10406404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!