Vous ne pouvez pas utiliser les déclarations préparées comme ça. Lorsque vous déclarez un espace réservé, vous évitez de faire des choses connexes sur eux, en laissant cela à l'espace réservé valeur définition. Ainsi, par exemple, vous pouvez l'utiliser comme ça :
$STH = $DBH->prepare("SELECT songs ,image ,artist,album,r_year
FROM english_fm
WHERE artist REGEXP :artist
GROUP BY artist order by slno");
$STH->bindValue(":artist" , "^[$artist]", PDO::PARAM_STR);