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來查詢,

所以可以使用字符串的查詢方式,數組沒有查到好的解決辦法,

歡迎大家指導!


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM