REGEXP与PDO Mysql

Har*_*der 2 php regex mysql pdo

我试图在PDO Mydql中使用REGEXP,但有一些错误

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;
        } 
Run Code Online (Sandbox Code Playgroud)

当我使用时,这是行不通的,REGEXP \"^[:artist]\" 但如果我使用的话

REGEXP \"^[$artist]\" 
Run Code Online (Sandbox Code Playgroud)

有用

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;
            } 
Run Code Online (Sandbox Code Playgroud)

请帮忙

Die*_*lló 7

您不能使用这样的预处理语句.声明占位符时,可以避免对它们执行任何相关操作,将其留给占位符定义.所以,例如,您可以这样使用它:

$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); 
Run Code Online (Sandbox Code Playgroud)