Yii自帶的query builder還是很好用的,省去了拼sql的過(guò)程,今天在寫(xiě)一個(gè)語(yǔ)句的時(shí)候遇到這樣一個(gè)問(wèn)題
$connection = Yii::app()->db;$command = $connection->createCommand();$Operate_rst = 0;if(!empty($_POST['lid'])){ $operate_rst = $command->update('emg_landing', $landing_info, 'lid=:lid', array(':lid' => $_POST['lid']));}else{ $operate_rst = $command->insert('emg_landing', $landing_info);}$connection->active = false;if($operate_rst > 0){ Functions::returnOk('OK!');}Functions::returnErrorJson();
用$operate_rst 來(lái)記錄操作結(jié)果,執(zhí)行新建insert沒(méi)有問(wèn)題,但是在更新時(shí)候,有時(shí)會(huì)顯示操作失敗,檢查了半天,也找不到原因,只好去翻文檔
http://www.yiiframework.com/doc/api/1.1/CDbCommand#update-detail
看到return那一項(xiàng)是
{return} integer number of rows affected by the execution.瞬間明白問(wèn)題了,因?yàn)橛械臅r(shí)候可能沒(méi)有改數(shù)據(jù)但是觸發(fā)了更新操作,所以這時(shí)候受更改的行數(shù)為0,返回的判斷就進(jìn)入到錯(cuò)誤代碼里。。
同理,delete() 和 insert() 的方法返回值意義也是受到影響的行數(shù),所以delete和insert可以根據(jù)返回值是否大于0來(lái)判斷操作是否成功,但是update操作不一定,返回值為0也有可能表示對(duì)DB操作成功。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注