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