thinkphp的select和find的区别

thinkphp的select和find的区别

http://blog.csdn.net/baronyang/article/details/8674673

 

原创 2013年03月14日 19:15:11

thinkphp是比较好的php开发框架,能比较快速的开发MVC架构的管理系统,我们需要用到 select()和find()方法,两个方法都能返回数据集数组,但有什么不同呢?先看一下我的代码对比:

[php] view plain copy
 
  1. $tech=M('techlevel','HR_CS_','DB_CONFIG2');  
  2. $Data=$tech->where('id=1')->find();  
  3. dump($Data);  
  4. $Data=$tech->where('id=1')->select();  
  5. dump($Data);  


结果

[php] view plain copy
 
  1. array(6) {  
  2.   ["ID"] => int(1)  
  3.   ["TechLevel"] => string(2) "10"  
  4.   ["Remark"] => string(4) "��"  
  5.   ["CreateDate"] => string(19) "2013-03-14 15:14:38"  
  6.   ["CreateBy"] => string(5) "admin"  
  7.   ["ROW_NUMBER"] => string(1) "1"  
  8. }  
  9.   
  10. array(1) {  
  11.   [0] => array(6) {  
  12.     ["ID"] => int(1)  
  13.     ["TechLevel"] => string(2) "10"  
  14.     ["Remark"] => string(4) "��"  
  15.     ["CreateDate"] => string(19) "2013-03-14 15:14:38"  
  16.     ["CreateBy"] => string(5) "admin"  
  17.     ["ROW_NUMBER"] => string(1) "1"  
  18.   }  
  19. }  


从上面的代码可以看出,find()返回一个一维数组,select()返回一个二维数组,所以在取值时有所不同,一维数组取值用$data["TechLevel"],二维数组取值用$data[0]["TechLevel"],由于一开始没了解这个用法,调试一天也取不值,最后有dump方法才看到两个方法的不同所在!

 

 
mo1232008
  • mo1232008

    2017-01-13 18:024楼
  • 补充一下。
    select()可以查询所有记录,而find()永远只返回一条记录。
    如果你的语句返回多条记录则find()会出问题,find()适合selectByPk。
  • 回复 
baronyang
 
maxsky
  • maxsky

    2016-06-06 02:183楼
  • 怪不得 find 时 foreach 老是返回错误的数据 -。- 死马当活马医试试 select 倒是可以了
 
gutongabc
  • gutongabc

    2015-02-08 12:582楼
  • 解决了我的问题,特意登陆了来点个赞,感谢楼主
 
posted @ 2017-12-01 10:31  sky20080101  阅读(69)  评论(0)    收藏  举报