Php Yii2-是否可以不引用bindValues()传入的参数?

Php Yii2-是否可以不引用bindValues()传入的参数?,php,oracle,pdo,yii2,bindvalue,Php,Oracle,Pdo,Yii2,Bindvalue,我正在尝试使用createCommand查询列,其操作如下: Yii::$app->db->createCommand('Select column1 from table where column2 in :array) ->bindValues(['array'=>['(1,2,3,4,5)', PDO::PARAM_INT]])->queryColumn('COLUMN1'); 理想情况下,我希望SQL语句的执行方式如下 select c

我正在尝试使用createCommand查询列,其操作如下:

 Yii::$app->db->createCommand('Select column1 from table where column2 in :array)
        ->bindValues(['array'=>['(1,2,3,4,5)',  PDO::PARAM_INT]])->queryColumn('COLUMN1');
理想情况下,我希望SQL语句的执行方式如下

select column1 from table where column2 in (1,2,3,4,5)
但是,当SQL执行时,绑定参数周围总是有引号,如下所示:

select column1 from table where column2 in '(1,2,3,4,5)'

在我指定PDO使用PDO::PARAM_INT之后,我不确定为什么仍会发生这种情况。INT不应该被引用吗?

您可以尝试使用查询生成器使用稍微不同的方法:

$rows = (new \yii\db\Query())
    ->select('column1')
    ->from('table')
    ->where(['column2' => [1,2,3,4,5]])
    ->column();
这具有预期的效果:由于传入了数组,因此使用in(…)语法自动生成where子句


如果数组的类型恰好是PHP内部的STRING类型,则不确定是否需要显式地将其强制转换为INT…

您可以使用查询生成器尝试一种稍微不同的方法:

$rows = (new \yii\db\Query())
    ->select('column1')
    ->from('table')
    ->where(['column2' => [1,2,3,4,5]])
    ->column();
这具有预期的效果:由于传入了数组,因此使用in(…)语法自动生成where子句

如果数组的类型恰好是PHP内部的STRING类型,则不确定是否需要显式地将其转换为INT