自动完成功能几乎正常工作,除了以大写字母开头的单词有问题。
例如“布鲁塞尔”这个词:
当我开始在搜索框中键入“russels”时,我将能够找到它,但“Bru…”将找不到。
寻找以小写字母开头的单词不是问题,一旦我开始输入bru,“布鲁塞尔”就会出现。
另外,像纽约这样的词不会出现在我开始打“约克”的时候,但会出现在我打“奥克”的时候。
Search.php文件
<?php
$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName= "vlucht";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
mysqli_set_charset($conn, 'utf8');
$id = $_GET['q'];
$sql = "SELECT discipline FROM overzicht where discipline like '%".$id."%'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["discipline"]. "\n";
}
} else {
echo "0 results";
}
$conn->close();
?>
index.php文件:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>
<script>
jQuery(function(){
$("#search").autocomplete("search.php");
});
</script>
</head>
<body>
Discipline : <input type="text" name="q" id="search" placeholder="Geef je discipline in">
</body>
</html>
最佳答案
MySQL的LIKE
通常不区分大小写,除非您使用的排序规则(例如二进制)不是这样的。假设不管出于什么原因,您的排序规则导致LIKE
区分大小写,下面是一种您可以用短语表达查询的方式:
$id = $_GET['q'];
$disc = "%" . strtolower($id) . "%";
$sql = "SELECT discipline FROM overzicht WHERE LOWER(discipline) LIKE ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $disc);
$stmt->execute();
请注意,我将切换到使用带有
mysqli
的准备好的语句,这样可以避免像SQL注入这样的事情,而您当前的脚本很容易这样做。关于php - 显示自动完成结果,但找不到大写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57560159/