thinkphp的select和find的区别

 我来答
柚子ok丶
2016-08-01 · TA获得超过815个赞
知道小有建树答主
回答量:646
采纳率:93%
帮助的人:189万
展开全部

1、都是读取查询数据的功能。

2、find 读取数据表中的一条数据(或者关联数据),主要通过find方法完成,如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。即使满足条件的数据不止一个,find方法也只会返回第一条记录(可以通过order方法排序后查询,查找到一条数据后则不会找下一条数据) 例如:

$User = M("User"); // 实例化User对象

// 查找status值为1name值为think的用户数据 

$data = $User->where('name="thinkphp"')->find();

dump($data);

3、select(别名findAll) 读取数据集,其实就是获取数据表中的多行记录(以及关联数据),使用select方法。如果查询出错,select的返回值是false,如果查询结果为空,则返回NULL,否则返回二维数组。例如:

$User = M("User"); // 实例化User对象

// 查找status值为1的用户数据 以创建时间降序(时间戳) 返回10条数据

$list = $User->where('status=1')->order('create_time desc')->limit(10)->select();


山东文汇
2016-06-21 · 我们年轻我们有活力、我们执着我们有耐心。
山东文汇
专业的软件开发服务商,网站开发、APP开发、微信小程序、商城小程序、知识付费产品。
向TA提问
展开全部
find 方法:查询符合条件的第一条数据,返回的是一个一维数组。
select 方法:查询符合条件的所有数据,返回的是一个二维数组。
find方法,如果带参数,就只能是主键ID,这样能返回对应数据,如果不带参数,返回的是所查询数据集的第一条记录
两者还有一个重要的不同之处:读取数据的操作其实和数据集的类似,select可用的所有连贯操作方法也都可以用于find方法,区别在于find方法最多只会返回一条记录,因此limit方法对于find查询操作是无效的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
raykaeso
2016-08-12 · TA获得超过160个赞
知道小有建树答主
回答量:224
采纳率:100%
帮助的人:134万
展开全部

find方法查询数据的时候可以配合相关的连贯操作方法,如果查询出错,find方法返回false,如果查询结果为空返回NULL,查询成功则返回一个关联数组(键值是字段名或者别名)。即使满足条件的数据不止一个,find方法也只会返回第一条记录

select方法读取数据集其实就是获取数据表中的多行记录(以及关联数据),如果查询出错,select的返回值是false,如果查询结果为空,则返回NULL,否则返回二维数组。

简单的总结下,find和select都是查询数据的方法,区别在于find不管结果有多少条只返回一条记录(等同于对结果加limit 1),select就是返回所有的结果。

例如find()的结果:

$res = M("user")->find();

array (size=1)
 'm_id' => string '14' (length=2)

例如select()的结果:

$res = M("user")->select();

array (size=5)
 0 =>
   array (size=1)
     'm_id' => string '14' (length=2)
 1 =>
   array (size=1)
     'm_id' => string '15' (length=2)
 2 =>
   array (size=1)
     'm_id' => string '16' (length=2)
 3 =>
   array (size=1)
     'm_id' => string '17' (length=2)
 4 =>
   array (size=1)
     'm_id' => string '18' (length=2)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滇哥的生活
2016-05-26 · TA获得超过229个赞
知道小有建树答主
回答量:335
采纳率:0%
帮助的人:114万
展开全部
FIND返回满足查询条件的第一条数据,而SELECT获取所有满足查询条件的数据。
因此二者在数组结构上表现出区别,FIND获得的是查询数据的一维的数组,而SELECT是二维数组,这样即便只查询到一条记录,二者的数组结构也是不同的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nhl2000
2016-07-22 · TA获得超过736个赞
知道小有建树答主
回答量:398
采纳率:0%
帮助的人:227万
展开全部
select() 和 find() 都是查询方法,不同的是:
select() 方法 可以查询多条结果集,可以用 limit()控制查询条数
find() 方法一次只查询一条结果集,自动带 limit(0,1) 控制查询条数
如果查询结果为一条的话,建议用 find(),比如说查某个会员详情
如果查询为多条的话,就得用select()了,比如查询会员列表
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(11)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式