分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

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

发布时间:2023-09-06 02:33责任编辑:董明明关键词:PHP

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

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved