【问题标题】:Delaying key strokes in php mysql search延迟php mysql搜索中的击键
【发布时间】:2014-12-28 00:22:25
【问题描述】:

所以我整合了一个搜索功能,可以在您键入时搜索并在文本字段中显示结果,但现在问题是它不会让我轻松删除并且“思考”太快了。关于如何减慢速度的任何想法?

<script>
$(document).ready
(function()
{
    $("#tag").keyup
    (function() 
        {
            var tag= $(this).val();
            if(tag!='')
            {
                $.ajax(
                {
                    type: "GET",
                    url: "autocomplete.php",
                    data: "q=" + tag,  
                    cache: false,
                    success: function(result)
                    {
                        $("#tag").val(result);
                    }
                }
                );
            }
            return false; 
        }
    );
}
);
</script>

然后是这个

<?php
 $q_incoming=$_GET['q'];
 //$my_data=mysql_real_escape_string($q_incoming);
 $mysqli=mysqli_connect('localhost','XXXXXXX','XXXXXXXX','XXXXX') or die("Database Error");
 $sql = "SELECT auto_complete_suggestions FROM auto_complete WHERE auto_complete_suggestions LIKE '$q_incoming%' LIMIT 0,1";

 $result = mysqli_query($mysqli,$sql) or die(mysqli_error());

 if($result)
 {
  while($row=mysqli_fetch_array($result))
  {
   echo $row['auto_complete_suggestions']."\n";
  }
 }
?>

我认为正在发生的事情是,如果我输入“he”,它会提示“help”,但是当我删除“p”时,它会再次提示,因为它有“hel”可以搜索。关于如何允许它删除以及减慢查询速度的任何想法,以便您可以以合理的打字速度输入字母?我可以使用计时功能坐立不安,或者在删除后告诉它忽略?

谢谢!

【问题讨论】:

  • 使用mysqli 时,您应该使用参数化查询和bind_param 将用户数据添加到您的查询中。 请勿使用字符串插值来完成此操作,因为您将创建严重的SQL injection bugs
  • JQuery 自动完成具有您正在寻找的 exact 延迟选项。如果您反对使用完整的 JQuery UI 库,请查看源代码并弄清楚他们是如何做到的。

标签: php mysql search


【解决方案1】:

最简单的方法是使用这个 jQuery 插件: http://benalman.com/projects/jquery-throttle-debounce-plugin/

查看“去抖动”下面的用法示例。这正是您要寻找的。​​p>

您应该使用prepared statements 否则您的应用程序容易受到 SQL 注入的攻击!

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 2018-08-02
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多