1

2 つの mysql テーブルpropertybuilding. propertyテーブルにはunitnumber、このフィールドの値はなど1aと呼ばれるフィールドがあります。テーブルには、フォーマットされているというフィールドがあります。値は次のようになります2bbuildingaddressPHP'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 (User Defined Function) をインストールして、MySQL内でurlencode()およびurldecode()関数を提供してみてください。リンクは次のとおりです。http://freecode.com/projects/libmysqludf

于 2012-07-27T02:32:08.747 に答える