Javascript 如何将通配符结果限制为仅键入的内容

Javascript 如何将通配符结果限制为仅键入的内容,javascript,php,jquery,database,Javascript,Php,Jquery,Database,问题概述 我正在尝试从输入字段中选择以键入的名称开头的所有名称 我的尝试 我有一个名为onkeypress的搜索函数,该函数从html表单中获取键入的文本,并从进程中将其发送到php页面 我的问题 查询只返回完整性中包含键入文本的结果,这实际上是我想要的结果,之后,结果会扭曲,因为添加的文本包含搜索文本的某些部分,而我不想要 程序代码 html表单 <input type="text" onkeypress="search(this.value)"/> <div id="se

问题概述

我正在尝试从输入字段中选择以键入的名称开头的所有名称

我的尝试

我有一个名为onkeypress的搜索函数,该函数从html表单中获取键入的文本,并从进程中将其发送到php页面

我的问题

查询只返回完整性中包含键入文本的结果,这实际上是我想要的结果,之后,结果会扭曲,因为添加的文本包含搜索文本的某些部分,而我不想要

程序代码

html表单

<input type="text" onkeypress="search(this.value)"/>
 <div id="search">
</div>
php进程页面

$coname=$_POST['cof'];
$coun="select * from registration where full_name LIKE '$coname%'";
                                       $rcount2=mysqli_query($cons,$coun);
还上传了异常结果和预期结果的截图

我得到的是:

预期结果:

看看这里:

要匹配所有John、Johan、jojo、jorgio等,请使用:

  select * from registration where full_name REGEX '^jo.*'

问题出现在PHP进程页面上。在LIKE的两侧使用%将返回包含名称中任何位置输入的内容的值,而不是仅在开始时输入的内容。更改:

$coname=$_POST['cof'];
$coun="select * from registration where full_name LIKE '%$coname%' 
致:


您应该会得到您要查找的结果。

在搜索字符串中使用通配符运算符<代码>%。但是,您需要更改您的逻辑,因为您非常容易受到SQL注入攻击。研究参数化查询。你能解释一下吗。您得到的响应是什么?您想要的响应是什么。我实际上在开始时使用了%运算符,但我忘记显示它。完整的代码如下$conn=“select*from registration where full\u name like“%$coname%”您的查询“$conn=“select*from registration where full\u name like'$coname%”将返回以$coname开头的值。该示例应适用于Mysql 5.7+您使用的数据库/版本是什么?Mysql版本是5.6.26结果正常,但几秒钟后整个内容再次失真,但这毫无意义。当搜索字段中开始键入某些内容时,将返回数据,当他们继续键入时,将返回更多结果,缩小他们的选择范围。Ajax调用的success分支是否会替换Ajax查询返回的新数据所显示的结果?是的,Ajax调用会替换div中显示的结果。请向我们展示代码(更新原始帖子)。在成功函数中尝试
document.getElementById('search')。innerHTML=data
$coname=$_POST['cof'];
$coun="select * from registration where full_name LIKE '%$coname%' 
$coname=$_POST['cof'];
$coun="select * from registration where full_name LIKE '$coname%'