如何从数据库中获取有关键入和匹配所有数据的结果?

时间:2018-02-25 17:53:24

标签: mysql sql

我有位置搜索'我的网站上的功能,我可以搜索位置。例如,如果我搜索纽约'我得到了结果,但是如果我按照第一个单词' l'来搜索位置。或者使用“&new;'或遗漏“纽约”这个词中的任何字符。 ,我一无所获。

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';
        }
}

我必须输入整个单词,即使有一个拼写错误的单词,例如'现在约克' ,它会找到' new york'。

但如果我输入' n'或者' new' ,我没有找到结果。

如何完成这项工作?

1 个答案:

答案 0 :(得分:0)

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

... WHERE location LIKE  :s