1

我有 2 个 mysql 表propertybuilding. 在property表中,我有一个字段,称为unitnumber该字段中的值,1a等等2b。在building表中,我有一个名为格式的字段。该值将类似于addressPHP's urlencoded26+Dovedale+Place%2C+Parnell

现在我想实现一个搜索功能,这样当用户输入时1a, 26 Dovedale我需要从数据库中提取结果。

目前已实施:

    $keyword = preg_replace('/[^a-zA-Z0-9-]/', '', $_REQUEST['keyword']);
    $keyword = str_replace(" ", "-", $keyword);
    $a->rqNotEmpty('keyword', $keyword);

    $query = "SELECT * FROM `buildings` b left join properties p on p.buildingId=b.id 
      WHERE concat(p.floor,p.number,b.address) LIKE '%".$keyword."%'
      or concat(p.number,p.floor,b.address)  LIKE '%".$keyword."'";

但是现在的问题是,当我准备$keyword变量时,我会得到类似的东西,并且在值将是类似的东西1a26Dovedale之后在数据库中。我无法对 $keyword 进行 urlencode,因为数据库不是标准化的形式。数据库在地址之间有 2 个空格。那么有没有办法mysql 字符串?我在这里处理近 400 万条记录!!CONCAT1a26+Dovedale+Place%2C+Parnellurldecode

4

1 回答 1

1

您可以尝试安装 MySQL UDF(用户定义函数)以在 MySQL 中提供urlencode()urldecode()函数。这是链接: http: //freecode.com/projects/libmysqludf

于 2012-07-27T02:32:08.747 回答