我有位置搜索'我的网站上的功能,我可以搜索位置。例如,如果我搜索纽约'我得到了结果,但是如果我按照第一个单词' 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' ,我没有找到结果。
如何完成这项工作?
答案 0 :(得分:0)
您的sql语句使用sounds like运算符,该运算符用于比较两个字符串的声音(发音)。您需要使用简单的like
运算符来匹配子字符串:
... WHERE location LIKE :s