自动完成功能几乎正常工作,除了以大写字母开头的单词有问题。
例如“布鲁塞尔”这个词:
当我开始在搜索框中键入“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/

10-16 20:56