Пожалуйста, попробуйте эти решения (не тестировались).
Решение 1
if(isset($selectedValues)){
$keywords = explode(',', $selectedValues);
$tag_arr = [];
$name_arr = [];
$name2_arr = [];
$published_arr = [];
foreach($keywords as $key){
$key = $db->escape_string($key);
$tag_arr[] = "tag LIKE '%{$key}%'";
$name_arr[] = "name LIKE '%{$key}%'";
$name2_arr[] = "name2 LIKE '%{$key}%'";
$published_arr[] = "published LIKE '%{$key}%'";
}
$tag_str = implode(' OR ', $tag_arr);
$name_str = implode(' OR ', $name_arr);
$name2_str = implode(' OR ', $name2_arr);
$published_str = implode(' OR ', $published_arr);
echo $sql = "SELECT name, img_dir FROM website WHERE $tag_str OR $name_str OR $name2_str OR $published_str";
$query = $db->query($sql);
if($query->num_rows) {
while($r = $query->fetch_object()) {
?>
Решение 2:
if(isset($selectedValues)){
$keywords_arr = explode(',', $selectedValues);
$keywords = [];
foreach($keywords_arr as $word){
$keywords[] = $db->escape_string($word);
}
$tag_str = "tag REGEXP '".implode('|', $keywords)."'";
$name_str = "name REGEXP '".implode('|', $keywords)."'";
$name2_str = "name2 REGEXP '".implode('|', $keywords)."'";
$published_str = "published REGEXP '".implode('|', $keywords)."'";
echo $sql = "SELECT name, img_dir FROM website WHERE $tag_str OR $name_str OR $name2_str OR $published_str";
$query = $db->query($sql);
if($query->num_rows) {
while($r = $query->fetch_object()) {
?>