REGEXP с PDO Mysql

Я пытаюсь использовать REGEXP в PDO Mydql, но что-то не так.

function artist_list($artist){
 global $DBH;
$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); 
 $STH->execute();
 $STH->setFetchMode(PDO::FETCH_ASSOC);
 return $STH;
 $DBH = Null;
 }

это не работает, когда я использую REGEXP \"^[:artist]\", но если я использую

REGEXP \"^[$artist]\"

работает

function artist_list($artist){
 global $DBH;
 $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); 
 $STH->execute();
 $STH->setFetchMode(PDO::FETCH_ASSOC);
 return $STH;
 $DBH = Null;
 }

пожалуйста, помогите

1 ответ

Вы не можете использовать подготовленные утверждения, подобные этому. Когда вы объявляете местозаполнитель, вы избегаете делать какие-либо связанные с ним вещи, оставляя это для определения значение. Так, например, вы можете использовать его так:

$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);

licensed under cc by-sa 3.0 with attribution.