Yii CDbCommand绑定非引用的params

时间:2014-04-30 12:49:34

标签: php mysql sql yii

我可以使用Yii CDbCommand

将非引用的参数绑定到查询中吗?

我尝试这样的事情

$sql = "INSERT :sourceTable SELECT * FROM :destTable GROUP BY :column1, :column2";
$params = array(
':sourceTable' => 'source_table_name'
...
);
Yii::app()->db->createCommand($sql)->execute($params);

但是得到一个错误,因为Yii param binder在表名和我的查询中添加单引号。有没有办法在没有引号的情况下绑定Yii param?

由于

2 个答案:

答案 0 :(得分:0)

不要将表名作为参数传递,只需将其设置为此(不带前缀):

$sql = "INSERT INTO {{source_table_name}} SELECT * FROM {{dest_table_name}} GROUP BY :column1, :column2";
$params = array(
...
);
Yii::app()->db->createCommand($sql)->execute($params);

答案 1 :(得分:0)

不确定是否可行。

但是,您可以将变量直接放入查询中,但首先使用CDbSChema::quoteTableName

此处提供更多信息:http://www.yiiframework.com/doc/api/1.1/CDbSchema#quoteTableName