我試圖在mysql中使用一個正則表達式,除了當我在我的單詞中使用引號時,它運行良好。在一個mysql REGEXP查詢中轉義單引號
例如:
SELECT * FROM table WHERE REGEXP "^pagina's[^[:space:]]*$"
我嘗試了所有的下列:
SELECT * FROM table WHERE REGEXP "^'.preg_quote("pagina's").'[^[:space:]]*$"
和
SELECT * FROM table WHERE REGEXP "^'.addslashes("pagina's").'[^[:space:]]*$"
和
SELECT * FROM table WHERE REGEXP "^'.mysql_escape_real_string("pagina's").'[^[:space:]]*$"
不幸..
由於單詞「pagina's」中的單引號('),它不會給我任何結果。
我該如何轉義所有引號才能讓mysql看到引號字面並匹配數據庫中的字段?
**編輯**
這是我的PHP代碼:
$word = "pagina's";
$ary[] = "LOWER(idx.sidx_word) REGEXP '^".preg_quote($word)."[^[:space:]]*$'";
如果我正確理解你的問題,你用'preq_quote(「pagina的」 )'? – Matt 2012-08-15 21:10:33
是的,我嘗試了所有的以下內容: SELECT * WHERE REGEXP 「^ 'preg_quote( 」pagina的「)。'[^ [:空間:]] * $」 和 SELECT * WHERE REGEXP「^」。和addslashes( 「pagina的」) '[^ [:空間:]] * $ 「 和 SELECT * WHERE REGEXP」 ^'。mysql_escape_real_string( 「pagina的」)'[^ [:空間:]]。* $ 「 不幸.. – SirCumz 2012-08-15 21:12:57
從不使用[addslashes](http://php.net/addslashes)來轉義傳遞給MySQL查詢的數據。如果您需要轉義某些內容,請使用[mysql_real_escape_string](http://php.net/mysql_real_escape_string)或[mysqli_real_escape_string](http://php.net/mysqli_real_escape_string)。 – Jocelyn 2012-08-15 21:13:44