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

浏览:8673 发布日期:2018/05/08 分类:求助交流 关键字: tp5 sql 查询
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
thinkphp 5.0.19
最佳答案
评论() 相关
后面还有条评论,点击查看>>