Und da hakt es gerade. Geht das überhaupt?
foreach ($worte as $suchbegriff) {
// das was du schon hast :)
}
Die einfachst Lösung ist dann ein geschickt plaziertes 1=1
SELECT
foo
FROM
bar
WHERE
1 = 1
AND CONCAT_WS( ... )
AND CONCAT_WS( ... )
AND CONCAT_WS( ... )
...
so kannst du vor jede deiner in PHP generierten Ausgaben ein AND setzen ohne zu prüfen ob du jetzt im 1. durchlauf deiner Wortliste bist oder nicht.