bindParam() will bind the variable by reference to the placeholder. So if the value of the variable changes, the placeholder value will get updated, too. That’s useful if you e.g. want to perform the same query with different values in a loop. Since Yii::app()->user->contact_id is not a “real” variable, PHP can’t bind by reference here. PHP 5.3. seems to be more rigid on error reporting here.
My guess is, you don’t need that feature anyway and could use bindValue() instead.