【发布时间】:2015-11-03 13:48:02
【问题描述】:
我有一个来自 Android 系统的字符串。 我收到该字符串,对应于 php 文件中的地址,并想检查该地址是否与我的数据库中的地址匹配。 但是,无论用户输入的单词顺序如何,我都希望它能够正常工作。
起初,我使用 LIKE 如下:
$address=preg_replace('#\s+#','%',$_POST['address']);
$address='%'.$address.'%';
echo $address;
$list_business = $bdd->prepare('SELECT * FROM business WHERE address LIKE ? OR name_business LIKE ?');
$list_business->execute(array($address,$address));
这实际上让我即使省略了一些单词也能得到结果。 例如,443 Street 将匹配 443 First Street。 但如果用户将 id 输入为 First Street 443,它不会返回任何内容。 我在考虑正则表达式,但它真的适合这类问题吗?或者我应该每个单词使用一个不同的正则表达式?
【问题讨论】:
-
您可以为每个输入的单词创建多个
likes。不过,它会给你返回多条记录。全文搜索可能是更好的方法。 dev.mysql.com/doc/refman/5.7/en/fulltext-search.html -
正在调查,谢谢 =)