php - 使用 PHP 和 AJAX 在数据库表中重复输入数据

标签 php javascript mysql ajax

我们有一个数据库,其中包含 70 多个表和超过 10k 的用户。数据库中的一个表用于记录用户的最新操作/更改,以便在比赛周结束(足球比赛)之前将它们挂起,我们称此表为“替补”。

但是,每周当我们在游戏周结束时推进系统(应用更改)时,我们会检查是否存储了任何关于用户更改的重复数据(我们刚才已经注意到),并手动将它们从数据库。

行有主键(不重复)只有数据是重复的。这就像插入查询被触发了两次。 (不确定这个或为什么)

示例:假设用户有一支足球队(场上 11 人,替补 4 人) 当用户选择球员并点击替补时,该球员(在场上)将与坐在替补席上的球员(替补)交换。此过程将立即发生,无需用户保存 (JavaScript)。但是,它不会保存在团队详细信息中,而是保存在跟踪更改的 Substitute 表中。

用户想要移除玩家 1 并进入玩家 12 (1->12)。第一步系统会记录

id   Team   from_player  to_player
0       x         1           12

如果用户进行另一个替换

id   Team   from_player  to_player
0      x        1           12
1      x        2           13

当用户替换回播放器 (12->1) 时,该记录将被删除 (1->12),因为用户替换回播放器,后来的替补取消了第一个。

id   Team   from_player  to_player
1     x         2           13

但有时它会多次记录该行

id   Team   from_player  to_player
0       x      1            12
1       x      1            12
2       x      1            12
3       x      2            13

或者副本可能介于两者之间

id   Team   from_player  to_player
0      x         1          2
1      x         2          13
2      x         1          2
3      x         1          2

N.B 这种情况每周只会发生在大约 10-100 名用户身上,尽管我们的数据库中注册了超过 10,000 名用户。

那么您认为造成问题的原因是什么? 我不想使用INSERT IGNORE,我想找到问题的根源并阻止它。

所以基本上,我的问题是:

1- 可能是服务器或客户端问题吗?

2- 在某些情况下可以调用/触发 ajax 代码两次吗?

3- 在执行相同查询两次的 sql server 中是否存在错误?

非常感谢您的帮助。

更新:

4- 如果问题出在客户端,我该如何检查?有什么建议的方法吗?

如果有人问,当用户换回同一个球员时会发生什么。 假设这是原始玩家设置的一部分。

                       | Original Status | After First Subs|After Second Subs|
                       |                 |                 |                 |
    On the field       |      p1         |        P12      |       P1        |
-----------------------|-----------------|-----------------|-----------------|
                       |                 |                 |                 |
    Subs(at the bench) |      p12        |        P1       |       P12       |
                       |                 |                 |                 |

原始状态 p1 在场上,p12 在替补席上(替补) 行动记录: s1- P1->P12 状态= P12 在场上。板凳上的P1

s2- P12->P1 状态= P1 回到场上。 P12 回到替补席。

请注意,不会记录 s2,但会删除 s1。就像 A * -1,然后又是 -A * -1。将相互抵消。

最佳答案

ajax mite 被多次调用,尝试使用您的 Firebug 进行检查。在成功标志出现之前,您可能需要禁用替代方法。

关于php - 使用 PHP 和 AJAX 在数据库表中重复输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12670699/

相关文章:

javascript - JQuery 中的字符串比较

javascript - 是否可以测试页面上控件的高度和宽度

MYSQL Join tables with no unique id on multiple columns

php - 解析 JSON 数据并插入到 MySQL

php 根据 mysql 中的列重命名目录中的文件

javascript - 从 WebStorm 运行 Protractor 测试时,在导入语句中获取意外的标记 {

php - 使用 $_GET 的解析和安全性

mysql - 查询以选择所有最小值中的最大值

php - PHP创建表脚本并在表中插入数据

php - 为什么当我查找某些列而不是其他列时,php 返回 json?