【问题标题】:Insert query on page load, inserts twice?在页面加载时插入查询,插入两次?
【发布时间】:2023-03-04 20:20:02
【问题描述】:

在我的游戏页面上,我有一个他们玩游戏的页面。在那个页面上我有一个查询

$insert_user_activity = mysql_query("INSERT INTO game_activity (user_id,user_full_name,game_id,game_name) values ('$user_id','$full_name','$browser_id','$game_title')");

它将它记录到我的数据库中,它只是独立存在,当我刷新页面时,由于某种原因它被提交到数据库两次。

【问题讨论】:

  • 每次刷新两次还是第一次加载一次再刷新一次?
  • 假设我输入了游戏的网址。查看数据库,它在那里两次。每次刷新两次。
  • 也许你只是以某种你没有意识到的方式调用了它两次。没有看到所有的代码很难说。
  • 我敢打赌,你有一个 <img src=''> 或某处使页面加载两次的东西。考虑显示更多代码,并查看 Firebug 的“网络”选项卡,例如加载的内容

标签: php sql insert


【解决方案1】:

你的前端控制器逻辑错误。

对您的网站发出的每个请求都会调用您执行此查询的页面,无论它是正确的请求还是对不存在的资源的调用。

您必须更改前端控制器的逻辑,使其不会针对无效请求运行应用程序。否则网站上线时将不会有一个而是数千个错误插入。

【讨论】:

  • 我不明白——什么是“前端控制器”,如何更改逻辑?
【解决方案2】:

我在 Firefox 中执行了两次查询时遇到问题,但在其他浏览器(Chrome 和 IE)中没有发生问题。我正在寻找答案并找到了这篇文章。

我发现了这个:

如果我执行一个简单的插入查询,当我在 Firebug 中打开“网络”功能时,它会被插入两次,这不会发生。奇怪的。只是想将此添加到此帖子中。 仍在努力解决这个问题。

{edit} 更新: 我找到了一个解决方案,虽然它不是一个漂亮的解决方案。如果这样的记录存在,我首先检查一个选择计数,如果不存在,那么它将被插入,否则它不会被插入。为我做了诀窍。

【讨论】:

    【解决方案3】:

    执行查询的页面上的条件是什么,或者以其他方式,您在页面上执行查询的变量的值如何,如果是这样,则首先检查变量是否存在(如果设置了变量)而不是运行查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多