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