thinkphp5里面 使用where('id',$id)->select()查询一条记录,在视图页面出错

本文介绍了在ThinkPHP5框架下,使用where('id',$id)->select()查询一条记录时遇到的问题及解决方法。原来,select()返回的结果需要使用volist循环输出,而find()则直接输出一维数组,无需循环。理解这两个方法的不同,能避免在视图页面出现错误。" 86661267,8205407,斗地主算法解析:牌型判断与实现,"['游戏开发', '算法设计', '扑克游戏', '逻辑编程']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在用tp5写代码的时候,遇到一个问题,代码如下:

$id=$_GET['id'];  
$list = Db::view('records','id,name,remark,createtime')
                ->view('section',['name'=>'secname','id'=>'sid'],'records.sectionid=section.id')
                ->where('records.id',$id)
               ->select();
在以前使用原生代码查询的时候,查询记录为一条时,在视图页面输出并不用循环输出。

所以我在页面输出该条记录时并没有使用volist进行循环输出,系统报错。

后来通过查找资料,明白了select()和find()的区别,才找到错误原因。


find()与 select() 的不同之处在于,find() 返回的是一个一维数组,可以在模板里直接输出数组单元的值而无需使用 volist 等标签循环输出;且find() 查询出来的始终只有一条数据,即系统自动加上了 LIMIT 1 限制。

直接像这样输出就可以了。

{$list['username']}


而select()不管查询出来的记录是一条还是多条,在页面输出时必须使用volist进行循环输出。


以上,又是今天遇到的一个坑。

public function taskWaterList($where,$order,&$page,$countSql,$dataSql){ if(!$order){ $order = 'id asc'; } $sql = $countSql; $count = $this->query($sql); foreach ($count as $key => $value) { $dataCount +=$value['count']; } if(!$where['export']){ $pageSize = C('PAGE_LIMIT'); }else{ unset($where['export']); $pageSize = 1000; } $page = new \Think\Page($dataCount, $pageSize, array('p' =>$page)); // $sql1 = $this->where($where)->buildSql(); $data = $dataSql.'order by '.$order.' limit '.$page->firstRow.', '.$page->listRows.''; $taskWaterList = $this->query($data); foreach ($taskWaterList as $key => &$value) { $value['no'] = $key+1+$page->firstRow; } unset($value); return $taskWaterList; } public function taskWaterStat($sql){ $sql = 'select count(1) as count,t.taskName,t.taskId from ('.$sql.') t group by t.taskId '; $rewardItem = $this->query($sql); foreach ($rewardItem as $key => &$value) { $value['完成数量'] = $value['count']; $value['count'] = number_format($value['count']); $name2[] = $value['taskName']; } unset($value); $name1 = array('完成数量'); $i = 0; foreach ($name1 as $k => $v) { $itemStat[$i]['name'] = $v; $itemStat[$i]['type'] = 'bar'; foreach ($rewardItem as $key => $value) { $itemStat[$i]['data'][] = $value[$v]; } $i++; } $data = array(); $data['list'] = $rewardItem; $starWaterModel = new \Lib\Fishing\StarWaterModel(); if($rewardItem){ $data['columnChart'] = $starWaterModel->getColumnChart($name1,$name2,$itemStat); }else{ $data['columnChart'] = 1; } return $data; }taskWaterStat实现分页
最新发布
03-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值