2013-02-25 30 views
1

我想在PDO Mydql使用REGEXP但有什么不对REGEXP随着PDO Mysql的

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; 
      } 

请帮助

回答

5

你不能使用这样的预处理语句。当你声明一个占位符时,你avoid doing any related stuff就在它们上面,留下这个占位符的定义。所以,例如,你可以这样使用它:

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