zoukankan      html  css  js  c++  java
  • 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来查询,

    所以可以使用字符串的查询方式,数组没有查到好的解决办法,

    欢迎大家指导!


  • 相关阅读:
    ruilei.cnblogs 访问量突破20万
    VSTS2008 Load Test Agent
    失落的星球 Lost Planet 秘籍
    C#去除特殊字符串
    Linq Coding Part Nine(IEnumerable、IQueryable、Set)
    Web Services Software Factory tutorial (1 of 5)
    迅雷新闻快讯区JS代码剖析
    Interfaces Topic
    前台如何调用后台事件
    [关注]个税起征点8000元什么时候到来?
  • 原文地址:https://www.cnblogs.com/gyfluck/p/10406404.html
Copyright © 2011-2022 走看看