【发布时间】:2011-10-26 23:43:35
【问题描述】:
我有一个 stores 表。有些字段是名称、网站、描述等。
我有一个自动建议搜索栏。我想匹配输入并显示一些相关的商店。现在,它可以完美匹配用户输入与名称的 LIKE 语句。
$input = $_GET["q"];
$data = array();
// query your DataBase here looking for a match to $input
include_once "scripts/connect_to_mysql.php";
$query = mysql_query("SELECT name,linklabel,permalink FROM tblMerchants WHERE name LIKE '%$input%'");
while ($row = mysql_fetch_assoc($query)) {
$json = array();
$json['name'] = ucwords($row['linklabel']);
$json['value'] = $row['permalink'];
$data[] = $json;
}
echo json_encode($data);
但是,我正在尝试将用户输入与表中的多个字段进行匹配。我正在尝试以下方法,但它不起作用:
SELECT linklabel,permalink
FROM tblMerchants
WHERE name LIKE '%$input%'
OR website LIKE '%$input%'
OR description LIKE '%$input%'
试图解决这个问题。任何意见表示赞赏!
对不起,应该提到这一点。通过不工作,我的意思是当使用多个 LIKE 语句时,它仍然只返回类似于'name'的结果
【问题讨论】:
-
不工作是指出现错误还是没有结果?
-
提示:我不知道这是您的生产代码还是只是一个示例,但请记住在查询中使用之前清理您的输入。您的代码容易受到 sql 注入的攻击。你可以使用 mysql_real_escape_string()
-
对不起,应该提到这一点。通过不工作,我的意思是当使用多个 LIKE 语句时,它仍然只返回类似于'name'的结果
-
当您使用除
name之外的其他字段时,查询实际上是否返回任何内容?我的意思是,例如,仅使用website之类的。试着澄清it isn't working是什么意思。 -
好吧,当我将一个单词查询与一个单词字段匹配时,它似乎在工作。但是,一旦我尝试将一个单词查询与多个单词字段(例如描述)进行匹配,它就无法正常工作。此外,当我尝试将两个单词查询与我知道存在的两个单词字段匹配时,它也不会显示任何结果。这些字段的数据库类型可能有问题吗?或者也许是排序规则。它们是 varchar 和 text。排序规则是 latin1_swedish_ci。另外,当我尝试在查询字符串上使用 mysql_real_escape_string() 时,我在搜索中没有得到任何结果?也许我应该尝试全文
标签: mysql sql sql-like autosuggest