【问题标题】:PDOException SQLSTATE[HY093]: yii-2 where and between QueryPDOException SQLSTATE[HY093]: yii-2 where and between Query
【发布时间】:2014-11-20 10:20:08
【问题描述】:

经过长时间的研究,我找不到 PDOException SQLSTATE[HY093] 的确切解决方案 我正在使用 yii 2 框架,但在条件之间使用时遇到问题。

$query = SalesOrder::find()->where(['between','created_date', ':fromDate', ':toDate']); 
$query->addParams([':fromDate' => $salesReport->fromDate,':toDate' => $salesReport->toDate]);
$query->all();

尝试了不同的相同问题。

$qString1=':fromDate';
$qString2=':toDate';

$query = SalesOrder::find()->where(['between','created_date',$qString1,$qString2]); 
$query->addParams([':fromDate' => $salesReport->fromDate],[':toDate' => $salesReport->toDate]);
        $query->all();

原因:PDOException SQLSTATE[HY093]: 参数号无效:绑定变量的数量与标记的数量不匹配

【问题讨论】:

  • 我认为您缺少一些字段数据。
  • 嗨,哪些字段数据?我的意思是在查询或 DB @Yushox
  • 我从上面的代码中学到的是占位符不应该作为字符串发送我猜。即,没有单引号。我不知道我很困惑......

标签: php mysql pdo yii2


【解决方案1】:

在这种情况下,您不能传递参数名称。试试看:

$query = SalesOrder::find()->where(['between','created_date', $salesReport->fromDate, $salesReport->toDate]);
$query->all();

或者,如果您想使用参数,请尝试:

$query = SalesOrder::find()->where('created_date BETWEEN :fromDate AND :toDate'); 
$query->addParams([':fromDate' => $salesReport->fromDate],[':toDate' => $salesReport->toDate]);
$query->all();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2020-08-11
    • 2023-01-27
    相关资源
    最近更新 更多