Yii2 SQLSTATE [HY093]:参数号无效:没有绑定参数

时间:2016-05-31 06:17:14

标签: activerecord yii2

在我的ModelSearch中,我有这样的代码:

$candidates = Candidate::find();
$dataProvider = new ActiveDataProvider([
   'query' => $candidates
]);

然后我正在尝试继续此查询:

$candidates->andFilterWhere([
   ' or ',
   ['like', 'candidate.something', $this->word],
   ['like', 'candidate.anything', $this->word]
]);

最后我返回$dataProvider

我记得我曾经多次使用过那种代码,并且从来没有遇到过任何问题,但是在整个尝试之后我还是意外地收到了同样的错误:

SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
The SQL being executed was: SELECT COUNT(*) FROM (SELECT * FROM `candidate` WHERE Array OR 'like' GROUP BY `candidate`.`id`) `c`

当我以这种方式编写代码时:

$candidates->andFilterWhere([
   ' or ',
   'candidate.`something` LIKE "%' . $this->word . '%" ',
   'candidate.`anything` LIKE "%' . $this->word . '%"',
]);

它似乎有效,但我不想这样做。我想问题的线索可能在其他地方,但我不知道我应该在哪里寻找它。

任何sugestions?

最好的问候。

[编辑]已解决:

@arogachev的提示结果是正确的:只是删除空格or使其正常工作。 QueryInterface无法识别未被修剪的条件运算符,这就是它被欺骗的原因(顺便说一下)。

2 个答案:

答案 0 :(得分:1)

[编辑]已解决:

@ arogachev的提示结果证明是正确的:只需删除" or"使它工作。 QueryInterface不识别未被修剪的条件运算符,这就是它被欺骗的原因(顺便说一下)。

答案 1 :(得分:0)

尝试使用或喜欢

$candidates->andFilterWhere([
  ['or like', 'candidate.something', $this->word],
  ['or like', 'candidate.anything', $this->word]
]);