查询出错:SQLSTATE[HY093]: Invalid parameter number


其实这应该跟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



打赏

评论

暂时关闭,稍后恢复~
文档请看10遍以上!有问题可加QQ群!
发表话题

源素材推荐

提问必知

0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复

积分规则

1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号


ThinkCMF 8.0.0发布啦!祝大家节日快乐! 立即体验!