Yii2 select2 数据库异常绑定变量数与令牌数不匹配

Posted

技术标签:

【中文标题】Yii2 select2 数据库异常绑定变量数与令牌数不匹配【英文标题】:Yii2 select2 database exception number of bound variables does not match number of tokens 【发布时间】:2021-03-09 08:12:21 【问题描述】:

当我在我的 yii 2 应用程序中使用 select2 小部件时,会导致以下错误:

SQLSTATE [HY093]: Invalid parameter number: number of bound variables does not match number of tokens
The SQL being executed was: SELECT * FROM `page` WHERE `page`.`id`=6

执行的 sql 并没有在 Page 模型的 find 函数中应用我的覆盖,如下所示:

public static function find()

    return parent::find()->where(['websiteId' => Yii::$app->website->id]);

调试堆栈提示我在第 333 行 ActiveRecord 中的 beforeInsert() 函数和此代码:

$this->node->refresh();

一切看起来都很好,那么有什么问题呢?

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题,好像是框架的bug! 只需找到 refresh() 函数并在 vendor/yiisoft/yii2/db/ActiveRecord.php 文件中更改以下行

$query->where($pk);

$query->andWhere($pk);

希望对您有所帮助,我渴望更好的解决方案。

【讨论】:

以上是关于Yii2 select2 数据库异常绑定变量数与令牌数不匹配的主要内容,如果未能解决你的问题,请参考以下文章

从 javascript 设置 yii2 select2 小部件的值

筛选 YII2 后 Select2 继续加载

Yii2 - 使用 Ajax 加载为 Select2 插件设置值

Yii2 Kartik Select2 多个标签输入字符串错误

Yii2 Kartik Select2 Ajax 控制器 - 结果未显示

mysqli_stmt::bind_param():类型定义字符串中的元素数与绑定变量数不匹配