在我的表中,我有一个点名称(地名(列,其中有一个字符串
比如城市银行大厦。
我有我的用户界面,在其中我有一个搜索框,用户可以输入任何关键字进行搜索。
现在我想从表列spotname中搜索该关键字,spotname是一个字符串。
所以基本上我想从存储在数据库中的字符串中提取一个子字符串。
例如
城市银行大楼-这是数据库字符串
银行-我的搜索关键字
字符串中包含单词"Bank"的任何字符串组合都应显示在列表中。
这是我的代码,
switch($search_by){
case "spotname":
$sql_where_clause = "sname LIKE ' %" . $search_keyword."%'";
break;
}
有人知道怎么做吗?
只有当用户输入单个单词或确切短语时,才可以在查询中使用LIKE。更好的方法是使用全文索引搜索:
CREATE TABLE places (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(200),
FULLTEXT (name)
);
那么您的查询将如下所示:
SELECT * FROM places
WHERE MATCH (name) AGAINST ('SEARCH PHRASE');
在此处阅读有关全文搜索的更多信息:http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
<?php
$query="Bank"; //or whatever you are looking for
$mysql=mysql_connect();
$result=mysql_query("SELECT `ColumnName` FROM `TableName` WHERE `ColumnName` LIKE '%$query%'", $mysql);
mysql_close($mysql);
?>
mysql查询将变成
SELECT `ColumnName` FROM `TableName` WHERE `ColumnName` LIKE '%Bank%'
它将选择任何包含Bank
的内容。因此,它将匹配以下所有
City Bank Building
Bank Building
Building Bank
Bank
BankBank
...and so on