我有 2 个 mysql 表property
和building
. 在property
表中,我有一个字段,称为unitnumber
该字段中的值,1a
等等2b
。在building
表中,我有一个名为格式的字段。该值将类似于address
PHP's
urlencoded
26+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 万条记录!!CONCAT
1a26+Dovedale+Place%2C+Parnell
urldecode