[SOLVED] DAO bindParam BUG


$insertCmd=Yii::app()->db->createCommand('INSERT INTO {{role_has_actions}} (role_id,action_key) VALUES ('.$this->getFormModel()->primaryKey.',:actionKey)');

$insertCmd->bindParam('actionKey',$actionKey);


$actionKey='BROWSE_ADMIN_LOG';

插入到数据库 action_key 的值是: "actionKey=BROWSE_ADMIN_LOG" ,我想这是最新svn更新后的一个bug~ 请qiang修正~

以下给出我的解决方案:

framework\db\CDbCommand.php

line: 199




if($this->_connection->enableParamLogging && ($pars=array_merge($this->_params,$params))!==array())

{

    foreach($pars as $name=>$value)

        $pars[$name]=$name.'='.$value;

    $par='. Bind with parameter ' .implode(', ',$pars);

}

change to:


if($this->_connection->enableParamLogging && ($pars=array_merge($this->_params,$params))!==array())

{

    $logPars=array();

    foreach($pars as $name=>$value)

        $logPars[$name]=$name.'='.$value;

    $par='. Bind with parameter ' .implode(', ',$logPars);

}

能解释一下这样改的原因么?

qiang 没有用dao?

我想应该问题比较明确,应该是为了做日志时记录 "绑定名=绑定值",而将 params 的值也改变了,

所以,应该是另外建立一个新数组来给日志记录使用~

我也是猜测的~请qiang定夺 :)

比较有意思,原来array_merge的结果能传递引用。已经fix了。谢谢。