更新数据库的问题

来问个比较弱的问题~

一直用Yii生成的DAO操作数据库的,发现有些时候还是得自己写。于是按着官方文档上关于AR方式的update操作的那段写的,但是却不能update

表是这样:

主键id ,name,password,auth,reme

$user= user::model()->find(‘name=:name’, array(’:name’=>‘可以查到数据的某个name’));

//$user= user::model()->findByPk(33); 这种查找方式也试过,但是也不行。

$user->password = ‘修改后的密码’;

$user->save();

echo($user->password);//这里输出是修改后的password

用这种方法不能更新数据库的password数据。后来去网上查说是得带着主键。

改了另一种写法:

$criteria=new CDbCriteria;

$criteria->select=‘id,name,password’;

//$criteria->select=array(‘id’,‘name’,‘password’); 这么写好像也行,但是最后也是不能update的~

$criteria->condition=‘name=:name’;

$criteria->params=array(’:name’=>‘可以查到数据的某个name’);

$user=user::model()->find($criteria); // $params is not needed

$user->password = ‘修改后的密码’;

$user->save();

结果还是不行,这是怎么回事?求助!请大家给我些建议~~谢谢~

比较弱的回答:

在诸如之后的查询


$user= user::model()->find('name=:name', array(':name'=>'可以查到数据的某个name'));

var_dump()一下


$user->password = '修改后的密码';

可否再var_dump()一下呢。

一切正常,可否去deforeSave回调去看看呢,正常就再跟踪到afterSave()中去。

当然建议使用:


CVarDumper::dump($var);

查了API发现有update()方法。。。被文档小忽悠了一下~~~多谢帮助啦~

这个地方因该不是update()和save()的区别所导致的错误。你看crud命令生成的actionUpdate中也是使用save()在操作,save()它自己会判断是insert 还是update.