C'est une déclaration valide, mais j'imagine que le problème est que les OR ne sont pas interprétés comme vous vous en doutez. Utilisez la syntaxe IN à la place:
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
J'ai enlevé les backticks dans certains endroits parce qu'ils sont seulement nécessaires pour échapper les noms de colonnes tableau & qui utilisent MySQL reserved keywords.
La façon suivante:
WHERE `type` = 'wall_common_text'
OR `type` = 'wall_common_fb'
OR `type`= 'wall_common_tw'
AND `owner_id`='{$iId}'
... évalue est:
WHERE (`type` = 'wall_common_text')
OR (`type` = 'wall_common_fb')
OR (`type`= 'wall_common_tw' AND `owner_id`='{$iId}')
Vous pouvez également placer des parenthèses autour des OR pour les séparer de l'ET, mais je suis d'accord c'est la façon d'aller ici. –
@Michael Madsen: Vous pouvez, mais 'IN' est plus maintenable - manquer ou égarer un crochet, et la requête peut être valide mais ne retournera pas les données correctes. Manquer un crochet sur le 'IN', et vous êtes garanti une erreur de syntaxe. –