【bug】$ar->save();不能更新数据!强哥~

bug是这样产生的,

我的数据库里的数据是采集来的,采集的时候直接写sql文入库

DB中某个字段(例:name)的长度是 50,

采集时没超过50格字(utf-8)所以入库成功

可是更新时




	public function save($runValidation=true,$attributes=null)

	{

		if(!$runValidation || $this->validate($attributes))

			return $this->getIsNewRecord() ? $this->insert($attributes) : $this->update($attributes);

		else

			return false;

	}



由于生成的rules,array(‘name’, ‘length’, ‘max’=>50),

所以[color="#FF0000"]$this->validate($attributes)[/color]会失败

造成更新不成功

实际上name才是18个中文,由于是utf-8,一个顶仨,所以验证失败了

强哥这个’max’=>50 用的是strlen 而不是 mb_strlen

那只能自己在rules里,改成array(‘name’, ‘length’, ‘max’=>150),吗?

又看了一下,可以改成这样:

array(‘title’, ‘length’, ‘max’=>50[color="#FF0000"], ‘encoding’ => ‘utf8’[/color]),

强哥,这句’encoding’ => 'utf8’不能在gii生成时加上吗?

PS:其实也不算bug,只不过因为不知加’encoding’ => ‘utf8’,找了半天问题,因为我本来要更新的不是name,而是另一个统计数字的字段,所以找了半天错误。发出来和大家一起分享吧