Php SQL查询正在生成多个记录

Php SQL查询正在生成多个记录,php,mysqli,Php,Mysqli,根据您的评论: 我用一种形式来称呼它 发生的情况是,您多次调用此函数: function sendmsg(){ $(document).keypress(function(e) { if(e.which == 13) { var message = $('#msgstring').val(); //$('#show').html(message); if(me

根据您的评论:

我用一种形式来称呼它<代码>

发生的情况是,您多次调用此函数:

       function sendmsg(){
 $(document).keypress(function(e) {
            if(e.which == 13) {

                var message = $('#msgstring').val();
                //$('#show').html(message);
                if(message !="")
                {
                    $.post('sendmessage.php',{postmsg:message},
                    function(data){
                     exit();

                    });
                }

            }});
    }
这个函数做什么?它绑定一个
按键
事件:

sendmsg()
也就是说,它不处理事件。它绑定处理事件的代码。因此,每次调用
sendmsg()
时,都会创建一个重复的绑定。考虑这一系列事件:

  • 调用
    sendmsg()
    ,将绑定
    keypress
    事件
  • 按下该键,将发出POST请求以创建记录
  • 再次调用
    sendmsg()
    ,将绑定第二个
    keypress
    事件
  • 再按一次键,两个事件处理程序都会执行,因此会发出两个POST请求并创建两个记录
  • 等等
  • 每次按
    输入中的键时,都会触发事件,但也会创建一个重复的事件处理程序。因此,每次按键都会产生越来越多的事件处理程序,并创建越来越多的记录

    仅绑定事件处理程序一次:

    $(document).keypress(function(e) {
        // handle the event
    });
    
    然后,无论何时按下
    输入中的某个键,都会自动调用此事件处理程序。因此,您不需要在
    输入中重复代码:

    // not inside a function
    $(document).keypress(function(e) {
        // handle the event
    });
    
    
    
    您是否多次运行脚本?与您发布的内容不同,它不会运行。把那只猫也从老鼠身上弄下来。你为什么不给我们看看你的完整和真实的代码呢?我想我不会的。嗯,我还没有这样编码。我将添加更多详细信息。@KyleSomerset:您对此做了哪些调试?您是否确认只有一个POST请求被发送到服务器?这一个请求会导致添加多个记录?另外,为什么要在函数内部绑定
    按键
    事件?你在哪里调用这个函数?我用一种形式调用它。我只希望它在按下enter按钮时发出请求。@KyleSomerset:这不就是保证的吗?:
    如果(e.which==13)
    首先解决这个问题,然后解决这个问题是否有效。现在你们正在用每一个按键来绑定这个活动,这是你们不想做的。谢谢,当我第二次读它的时候,这真的让人大吃一惊,干杯。
    // not inside a function
    $(document).keypress(function(e) {
        // handle the event
    });
    
    <input type="text" id="msgstring"/>