2014-01-20 53 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