Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 搜索MySQL数据库,其中字段包含符号_Php_Mysql - Fatal编程技术网

Php 搜索MySQL数据库,其中字段包含符号

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

我的MySQL服务器上有一个位置数据库,包含英国邮政编码、邮政城镇、县和坐标。如果要搜索“connahs”(实际结果是“Connah’s Quay”),则不会返回任何结果,因为它们不包含撇号。这同样适用于连字符和其他符号

在本例中,邮政镇“Connah’s Quay”的格式正确,因此我不能仅从数据库中删除符号

到目前为止,我的问题是:

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语句可能更好