解决方案 »

  1.   

    估计是连点了两次提交我目前对于这种情况是前后台两种限制前台当点击提交按钮时先把提交按钮变灰,并且不可点 ,然后再ajax向后台传值  返回结果后视程序逻辑转跳或者恢复按钮后台插入前先判断是否已经有这条数据了(根据一个或几个不可能重复的字段来判断) 如果没有才进行插入.额,如果是form表单提交的话  也可以用js来代替submit  点击后js先禁用按钮,再用js进行submit
      

  2.   

    只点了一次,但这种机率一个月会遇到一两次,我PHP代码中有先查询当前这个单号是否存在,如不存在才能执行写入数据库的作业的。所以纠结是什么情况出现的
      

  3.   

    秒并发问题。
    例如有两次请求A,B同时到达
    AB,都过了判断是否重复那个位置,然后当A插入后,B都会跟着插入。可以这样写来避免重复插入。
    例如test表有两个字段 name,valueINSERT INTO test(name, value) SELECT 'fdipzone', '123' FROM DUAL WHERE 'fdipzone' NOT IN (SELECT name FROM test);
      

  4.   

    虽然多个用户同时提交相同的内容的概率很低,但楼主也只是“有时候”出现
    撇开程序的问题,这种情况在十年前经常出现。原因是浏览器的升级版本不稳定,导致一个请求发送两次数据,当然现在都已经修复了。不过怀旧者非要使用的话,出现问题也就很正常了
    另一种情况是:表单不是提交到本页,或提交是由 ajax 完成的,此时如果用户的鼠标过于劳累,单单击变成了双击。从而造成二次提交也是可能的防范这些非人为的故障可以在接收时做一下判断
    session_start();
    if(isset($_SESSION['post']) && $_SESSION['post'] == md5(serialize($_POST))) return;
    $_SESSION['post'] = md5(serialize($_POST));
    //正常的提交处理