Javascript 如何让我的查询读字母(ñ)

Javascript 如何让我的查询读字母(ñ),javascript,php,html,mysql,sql,Javascript,Php,Html,Mysql,Sql,我的查询过滤不会过滤名称中包含字母¨的名称…有人能帮我阅读查询并过滤名称中包含字母¨的名称吗…请 每次名称上有一个¨时,我的查询都会将其读取为null 当前代码: <form> <input type="text" name="search" id="query"/> </form> <script type="text/javascript"> $(document).ready(function(){ $("#query").auto

我的查询过滤不会过滤名称中包含字母¨的名称…有人能帮我阅读查询并过滤名称中包含字母¨的名称吗…请

每次名称上有一个¨时,我的查询都会将其读取为null

当前代码:

<form>
<input type="text" name="search" id="query"/>
</form>
<script type="text/javascript">
$(document).ready(function(){

    $("#query").autocomplete({
        source : 'search.php',
        select : function(event,ui){
            $("#query").html(ui.item.value);
        }
    });

});
</script>
search.php代码:

<?php

$q = $_GET['term'];

mysql_connect("localhost","root","");
mysql_select_db("klayton");
$query = mysql_query("SELECT name 
FROM tb_applicants
WHERE name LIKE '$q%'");

$data = array();
while($row = mysql_fetch_array($query)){
$data[]=array('value'=>$row['name']);
}
echo json_encode($data);
?>

在运行查询之前添加此选项

mysql_query("SET NAMES utf8");
将表和列的编码和排序规则更改为utf8-utf8\u general\u ci

如下更改php以避免发送空值:

while($row = mysql_fetch_array($query)){
if(!empty($row['name']))
$data[]=array('value'=>$row['name']);
}

这将省略所有名称为null的人:-这里的问题是,在mysql\u fetch\u数组的迭代过程中,也有数字键,没有一个是“name”,因此null.error。mysql\u fetch\u数组不先返回关联值,然后返回数组值,mysql\u fetch\u数组返回相同数量的记录,并带有替代项。这不会导致空问题。哦,你是对的,每个$row都是数组'name'=>,0=>…:@如果我使用你的代码,我的搜索功能将无法工作。为什么?你试过了,还是只是说说而已?您的搜索功能在mysql中。这是php。您可以尝试这样更改逻辑:从tb_申请者中选择名称,其中substringname,1,$lngth=$q;其中,$length=strlen$q;ajax响应是什么?检查开发人员工具中的“网络”选项卡,看看问题是在php端还是在js端。@Volkan Ulukut我认为问题是查询不会先用空格(如红色)过滤名称,然后返回null…我如何防止它?我这里有数千个名称,很难编辑它们。这本身不会导致问题。您检查过ajax输出了吗?请粘贴在此处。如果您也需要选择它们,请在查询中尝试TRIMname