我有一个代码
$command = Yii::app()->db->createCommand()
->update(
'queue q',
array('i.status_id' => $status_id)
)
->join('item i', 'q.item_id = i.item_id')
->where('IN', 'queue_id', $ids);
在我调用$ command-> buildQuery()后,我收到一个错误:
CDbCommand无法执行SQL语句:参数号无效:未定义参数 . 执行的SQL语句是:UPDATE queue q SET i.status_id =:i.status_id
印象是它没有看到连接和where命令 . 有什么问题?
4 回答
您的代码对最新的Yii版本有效 . 从1.1.14开始,这个特定于MySQL的功能已添加:https://github.com/yiisoft/yii/commit/ed49b77ca059c0895be17df5813ee1e83d4c916d .
where子句应该在update()函数中
关于JOIN部分,https://github.com/yiisoft/yii/issues/124有一个开放的错误(我不确定 . 如果我错了,请纠正我) . 如果有解决方法,请告诉我 .
你必须绑定参数:
在我的项目中遇到过这个问题几次我已经提出了以下Yii使用CDbCriteria来解决这个问题,这是一个有点hacky,但它提供了param计数匹配的安全性 .
当应用于您的示例时,我的代码将是(猜测您的结构):