It's a valid statement, but I imagine the issue is the ORs aren't being interpreted like you'd expect. Use the IN syntax instead:
SELECT content
FROM bx_wall_events
WHERE `type` IN ('wall_common_text', 'wall_common_fb', 'wall_common_tw')
AND `owner_id` = '{$iId}'
ORDER BY `date` DESC
LIMIT 1
I removed the backticks in certain spots because they're only necessary for escaping table & column names that are using MySQL reserved keywords.
The way this:
WHERE `type` = 'wall_common_text'
OR `type` = 'wall_common_fb'
OR `type`= 'wall_common_tw'
AND `owner_id`='{$iId}'
...is evaluating is:
WHERE (`type` = 'wall_common_text')
OR (`type` = 'wall_common_fb')
OR (`type`= 'wall_common_tw' AND `owner_id`='{$iId}')