SQL查询正在制作多条记录

时间:2015-04-05 21:09:32

标签: php mysqli

<?php

    $msg = $_POST['postmsg'];

    $con = mysqli_connect("localhost","root","somerset","chatroom") or die("sqlffs");

    mysqli_query($con, "INSERT INTO `chat`(`msg`) VALUES ('$msg')");
    mysqli_close();

?>

我的代码在我的数据库中创建了多条记录。 我无法弄清楚为什么会这样。

这是运行php的代码

       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();

                    });
                }

            }});
    }

1 个答案:

答案 0 :(得分:0)

根据您的评论:

  

我把它称为表格。 <input onkeypress="return event.keyCode != 13;" type="text" onkeyup="sendmsg()" id="msgstring"/>

发生的事情是你不止一次调用这个函数:

sendmsg()

这个功能有什么作用?它绑定keypress事件:

$(document).keypress(function(e) {
    // handle the event
});

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

  1. 致电sendmsg()keypress事件已绑定。
  2. 按键,发出POST请求以创建记录。
  3. 再次致电sendmsg()第二个 keypress事件被绑定。
  4. 再次按一个键,两个事件处理程序都被执行,因此,两个 POST请求被创建并且两个记录被创建。< / LI>
  5. 等......
  6. 每次按下input中的某个键,都会触发该事件,但会创建一个重复的事件处理程序。因此,每次按键都会产生越来越多的事件处理程序,并且会创建越来越多的记录。

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

    // not inside a function
    $(document).keypress(function(e) {
        // handle the event
    });
    

    然后,只要按下input中的某个键,就会自动调用此事件处理程序。因此,您不需要在input

    中重复的代码
    <input type="text" id="msgstring"/>