php - 如何根据两个单元格值进行搜索

标签 php mysql

我正在使用搜索框来查找数据库中的条目。 一列包含正在查找的内容的标题/名称。 然后我有第二栏,其中给出了适用的简短描述(通常很少的文字)

我正在尝试搜索(使用搜索框)以匹配一个或什至两个组合的单元格。这可能吗?如果可以,如何实现?

您可以在下面看到我的代码,其中显示了我尝试实现的目标,但无论如何,让我稍微说明一下:

Example:
Database.title = "towel"
Database.description = "red, small"

Now, if I type into my search box "tow%red" I want to find the item.

显然没有找到,因为标题中不包含“red”。但如果我只搜索“毛巾”,它可能会根据不同的尺寸、颜色或其他属性向我显示不同的商品,并且列表会变得太长。 当然我也希望能够简单地搜索“%red%small%”并且仍然能够找到它,或者只搜索“毛巾”。

这是我执行搜索的 php 代码:

if ( !isset($_REQUEST['term']) ) {
    exit;
}
$search = mysql_real_escape_string($_REQUEST['term']);
$queryString = "SELECT * FROM items WHERE title+description LIKE '%{$search}%'";
$query = mysql_query($queryString);
$data = array();
if ( $query && mysql_num_rows($query) )
{
    while( $row = mysql_fetch_array($query, MYSQL_ASSOC) )
    {
        $label = $row['title'];
        if ($row['description']) {
            $label .= ' — '. $row['description'];
        }
        $data[] = array(
            'label' => $label,
            'value' => $row['code']
        );
    }
}
echo json_encode($data);
flush();

我知道上面的内容行不通,我只是这样表达我想要的。 工作代码包含这一行:

$queryString = "SELECT * FROM items WHERE title LIKE '%{$search}%'";

最佳答案

添加全文 (see documentation here) 标题描述的索引。

ALTER TABLE items
ADD FULLTEXT INDEX items_index
(title, description);

这将让您搜索这些列。

然后构建一个如下查询:

SELECT * 
FROM items
WHERE MATCH(title, description) 
AGAINST ('SEARCH KEYWORD HERE' IN BOOLEAN MODE);

关于php - 如何根据两个单元格值进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824647/

相关文章:

php - 如何显示 DOMElement?

php - 如何从 php 中的用户代理字符串检测浏览器欺骗和机器人

php - Composer 自动加载命名空间错误

php - 在 while 循环中使用 JOIN sql 查询

java - 如何设置MySQLDataSource的池大小?

php - 使用 PHP 日期显示每周日期

php - 如何将 php 数组存储到 redis 并在 nodejs 中检索?

PHP Api 接收 JSON 数据

php - 在 MySQL 数据库中存储路径/层次结构的最佳方式是什么?

php - 如何根据另外两个表的计算从一个表中检索数据?