【问题标题】:REGEXP With PDO Mysql正则表达式与 PDO Mysql
【发布时间】:2013-02-10 06:42:12
【问题描述】:

我正在尝试在 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;
        } 

这在我使用 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;
            } 

请帮忙

【问题讨论】:

    标签: php mysql regex pdo


    【解决方案1】:

    您不能使用这样的准备好的语句。当你声明一个占位符时,你 avoid doing any related stuff 他们,把它留给占位符 value 定义。因此,例如,您可以这样使用它:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-12
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2020-08-05
      • 1970-01-01
      • 2011-10-05
      相关资源
      最近更新 更多