$criteria = new CDbCriteria();
$criteria->addCondition("customid = :customid");
$criteria->params= array(':customid'=>$customid);
if(trim($groupid)!=""){
$criteria->addCondition ('groupid' = :groupid);
$criteria->params= array(':groupid'=>$groupid);
}
}
在寫Yii框架的查詢操作時,使用CDbCriteria一直在報一個錯:
Invalid parameter number: number of bound variables does not match number of tokens.
這個報錯的意思是你查詢的條件和參數個數不相符;
如果自信觀察下我上面的代碼,會發現有個大意的錯誤了的,加入我符合goupid的條件,那麼最終我的參數就只有一個,就是 :goupid,而全線的:customid =$customid就會被覆蓋了,所以解決的辦法就是在goupid條件語句裏面做個更改:
$criteria->params= array(':customid'=>$customid,':groupid'=>$groupid);
或者使用這種寫法會更好:
<span style="white-space:pre"> </span>$criteria = new CDbCriteria();
$criteria->addCondition("customid = :customid");
$criteria->params[':customid'] = $customid;
if(trim($groupid)!=""){
$criteria->addCondition ("groupid = :groupid");
$criteria->params[':groupid'] = $groupid;
}