<?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
thinkphp 5.0.19
最佳答案