其实这应该跟tp5的查询使用在关。以下是代码:
controller代码:
<?php // +---------------------------------------------------------------------- // | 论坛控制器 // +---------------------------------------------------------------------- namespace app\portal\controller; use cmf\controller\HomeBaseController; use app\portal\model\ForumPostModel; class ForumController extends HomeBaseController { public function index(){ $forumPost = new ForumPostModel(); $param = $this->request->param(); $forum_id_list = []; //根据关键字搜索到的符合条件帖子归属的主题ID $param['ss'] = strtolower($param['ss']); $forumPost->where('post_status',1) ->where('delete_time',0) ->where(function($query){ $query->where('lower(subject) like :keyword'); $query->whereOr('lower(message) like :keyword'); }); $forumPost->bind('keyword','%'.$param['ss'].'%'); $forum_id_list = $forumPost->distinct(true)->column('threads_id'); return dump($forum_id_list); } }
model代码:
<?php namespace app\portal\model; use think\Model; class ForumPostModel extends Model { }
附sql表:
CREATE TABLE `cmf_forum_post` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '帖子ID', `threads_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '主题ID', `position` int(10) unsigned NOT NULL COMMENT '位置', `reply_position` int(10) unsigned NOT NULL DEFAULT '1' COMMENT '回复引用的楼层', `reply_user_nickname` varchar(50) NOT NULL DEFAULT '' COMMENT '引用回复的昵称', `reply_create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '引用的原帖创建时间', `reply_message` text COMMENT '引用的回复原文', `reply_more` text COMMENT '来自引用回复的更多扩展', `forum_id` mediumint(9) NOT NULL DEFAULT '0' COMMENT '版块ID', `is_first` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否首帖:0-否,1-是', `user_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人', `user_nickname` varchar(50) NOT NULL DEFAULT '' COMMENT '昵称', `subject` varchar(80) NOT NULL DEFAULT '' COMMENT '标题', `create_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', `message` text NOT NULL COMMENT '帖子正文', `user_ip` varchar(15) NOT NULL DEFAULT '' COMMENT '发帖者IP', `invisible` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '是否通过审核:0-未审核,1-审核通过,2-未通过', `post_status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '显示状态:1-显示,0-不显示', `filter_word` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否含敏感词:0-不含,1-含有', `user_limit` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0-游客可查看,1-会员可查看', `update_user_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '最近更新人', `update_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最近更新时间', `delete_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '删除时间', `more` text COMMENT '扩展属性,格式json', PRIMARY KEY (`id`), UNIQUE KEY `UQ_cmf_forum_post_id` (`id`), KEY `fid_index` (`forum_id`) ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb4 COMMENT='帖子数据表';
在执行 portal/forum/index/ss/a 时出错:
[10501] PDOException in Connection.php line 390
SQLSTATE[HY093]: Invalid parameter number
感觉是在where方法那里出了问题,后来我使用fetchsql出来的sql语句放到sql命令里执行也没问题,请问这是怎么回事,怎么解决这个问题?
附上环境:
window 10
apache 2.4
php 5.6.19
mysql 5.5
thinkcmf 5.0.180508
0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复
1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号