Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示自动完成结果,但找不到大写字母_Php_Jquery_Mysql_Uppercase - Fatal编程技术网

Php 显示自动完成结果,但找不到大写字母

Php 显示自动完成结果,但找不到大写字母,php,jquery,mysql,uppercase,Php,Jquery,Mysql,Uppercase,自动补全功能几乎正常工作,除了以大写字母开头的单词有问题 例如,“布鲁塞尔”一词: 当我开始在搜索框中输入“russels”时,我将能够找到它,但找不到“Bru…” 寻找以小写字母开头的单词不是问题,一旦我开始输入“bru”,就会出现“布鲁塞尔” 此外,当我开始打“约克”时,像“纽约”这样的词不会出现,但当我打“ork”时会出现 Search.php文件 <?php $dbServername = "localhost"; $dbUsername = "root"; $dbPassword

自动补全功能几乎正常工作,除了以大写字母开头的单词有问题

例如,“布鲁塞尔”一词:

当我开始在搜索框中输入“russels”时,我将能够找到它,但找不到“Bru…”

寻找以小写字母开头的单词不是问题,一旦我开始输入“bru”,就会出现“布鲁塞尔”

此外,当我开始打“约克”时,像“纽约”这样的词不会出现,但当我打“ork”时会出现

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();
?>

MySQL的
通常不区分大小写,除非您使用的排序规则(例如二进制)并非如此。假设无论出于何种原因,排序规则都会导致
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注入之类的事情,而您当前的脚本很容易使用SQL注入。

数据库/表的排序规则是什么?旁白:您很容易受到攻击。奇怪-这对我来说很好@Dharman我修改了我的答案,因此我现在直接将一个PHP字符串变量绑定到语句。我读到的所有关于mysqli语句的教程都是这样做的。
$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();