mysql - 如何在输入时从数据库获取结果并匹配所有数据?

标签 mysql sql

我的网站上有“位置搜索”功能,我可以在其中搜索位置。例如,如果我搜索 'new york' 我会得到结果,但如果我通过第一个单词 'l' 或使用单词 'new' 或缺少单词 'new york' 中的任何字符来搜索位置,我会得到什么都没有。

JS:

document.getElementById('text-input').addEventListener('keyup' , searchLocation);

searchLocation 函数向连接数据库并返回匹配项的 PHP 文件发出 AJAX 请求。

这是 PHP 文件中的代码:

$query = $_POST['q'];
$pattern = '/^[a-zA-Z]+(\s+[a-zA-Z]+)*$/';
if(preg_match($pattern, $query)){
        $stmt = $pdo->prepare('SELECT * FROM users WHERE id IN (SELECT MIN(id) FROM users WHERE location SOUNDS LIKE  :s
         GROUP BY location
        );');
        $stmt->bindValue(':s', '%' . $query . '%', PDO::PARAM_STR);
        $stmt->execute();
        $value = $stmt->fetch();
        $count = $stmt->rowCount();

        if($count > 0){
                echo $value['location'];
        }else{
            echo 'No Results Found';
        }
}

我必须输入整个单词,即使有拼写错误的单词,例如“now york”,它也会找到“new york”。

但是如果我输入 'n' 或 'new' ,我将找不到任何结果。

如何完成这个任务?

最佳答案

您的sql语句使用sounds like运算符,用于比较两个字符串的声音(发音)。您需要使用简单的 like 运算符来匹配子字符串:

... WHERE location LIKE  :s

关于mysql - 如何在输入时从数据库获取结果并匹配所有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48976597/

相关文章:

sql - 使用 TinyTds Ruby Gem 解析和运行 .sql 脚本

php - "multiplying"MySql 记录有什么方法可以测试服务器上的大型数据库吗?

sql - ms sql 上 SP 性能问题中的 UDF

sql - 删除特殊字符 SQL

mysql - 按类型限制查询结果

mysql - 是否可以使用查询来选择除少数列之外的所有列?

php - 在 LAMP 应用程序中设置用户限制

mysql - 数据库结构

php - CakePHP,链接到其他模型的 "settings"页面。它本身需要是一个模型吗? , MySQL 发出结果

mysql - 如何替换 MySQL 中的整列?