Php 搜索MySQL数据库,其中字段包含符号
我的MySQL服务器上有一个位置数据库,包含英国邮政编码、邮政城镇、县和坐标。如果要搜索“connahs”(实际结果是“Connah’s Quay”),则不会返回任何结果,因为它们不包含撇号。这同样适用于连字符和其他符号 在本例中,邮政镇“Connah’s Quay”的格式正确,因此我不能仅从数据库中删除符号 到目前为止,我的问题是:Php 搜索MySQL数据库,其中字段包含符号,php,mysql,Php,Mysql,我的MySQL服务器上有一个位置数据库,包含英国邮政编码、邮政城镇、县和坐标。如果要搜索“connahs”(实际结果是“Connah’s Quay”),则不会返回任何结果,因为它们不包含撇号。这同样适用于连字符和其他符号 在本例中,邮政镇“Connah’s Quay”的格式正确,因此我不能仅从数据库中删除符号 到目前为止,我的问题是: SELECT * FROM uk_postcodes WHERE postal_town LIKE "connahs%" ORDER BY postal_town
SELECT * FROM uk_postcodes WHERE postal_town LIKE "connahs%" ORDER BY postal_town LIMIT 25
是否有任何方法可以搜索同时包含符号(connah)和不包含符号(connah)的字段,以便无论用户是否使用撇号都返回结果?使用mysql替换函数。查询将如下所示:
SELECT * FROM uk_postcodes WHERE REPLACE( postal_town, "'", "" )
LIKE "connahs%" ORDER BY postal_town LIMIT 25
希望它能帮助你 我假设您在代码中使用了php
// get the value of searched word from searchbox or something...
$keyword = $_POST['uk_postcodes'];
// avoid sql injection to, also read for special characters
$keyword = mysql_real_escape_string($keyword);
$keyword = stripslashes($keyword);
$query = "SELECT * FROM uk_postcodes WHERE postal_town LIKE %$keyword ORDER BY postal_town LIMIT 25";
在上面的代码中,您可以键入任何内容 不是OP要求的,而且使用过时的mysql_*函数。使用mysql替换内联将搜索速度减慢到爬行。有超过170万个结果需要筛选,因此替换每个结果并尝试匹配不是一个合适的解决方案。LIKE通配符可以匹配任意数量的字符,包括0
connah%s%
将匹配connahs
和connah的
,但它也将匹配以connah
开头的任何字符,后跟任意数量的s
,因此它可能不是理想的解决方案。使用或添加多个LIKE语句可能更好