2014-01-20 51 views
0

我在MySQL以下查詢:從電話號碼查詢%刪除特殊字符,如%

foreach($keywords as $keywordKey => $keyword){ 
    $query = $query . " AND (id='".$keyword."' OR name LIKE '%".$keyword."%' OR email LIKE '%".$keyword."%' OR phone LIKE '%".$keyword."%')"; 
} 
$query = $query . " ORDER BY name"; 
$queryResult = mysql_query($query) or die('Error al ejecutar la busqueda de clientes con los parametros suministrados: '.mysql_error());; 

$keyworks與搜索欄的數據陣列。我想從phone LIKE '%".$keyword."%'中刪除特殊字符,因爲用戶可以在電話號碼字段中使用「。 - ()」進行註冊,並且我使用「乾淨」電話號碼(無特殊字符)搜索它們。我怎麼能在MySQL中做到這一點?

+0

好吧,如果你還沒有嘗試過/搜索任何東西就更難..你想要做什麼是[REPLACE](HTTP://開發.mysql.com/doc/refman/5.6/en/string-functions.html)搜索前的一些字符 – Leonardo

+0

不是真的,因爲我必須在將查詢與$關鍵字進行比較之前刪除特殊字符。如果我在它之後進行比較,%like%總是返回false。 – nandophillips

回答

1

我會做這個以外的MySQL和使用PHP和一些正則表達式。

$phoneNumber = preg_replace('[^0-9]', '', $keyword); 

這將替換所有非數字字符

+0

不,我不需要從$關鍵字中替換特殊字符,是通過「電話」數據庫列來比較它與$關鍵字。 – nandophillips

+0

他說的是,你需要格式化數據庫中的數據,然後從搜索查詢中刪除特殊字符變得容易。因此插入時對數據使用preg_replace,對搜索時使用關鍵字preg_replace。這樣,你根本不處理特殊字符,你只需從等式中完全刪除它們。 – Kver