我正在尝试编写一些更新mysql表的代码,然后在同一页面中选择同一个表。但是,我发现当我执行更新查询,然后选择查询时,它无法识别更改。但是,如果我刷新页面,则会识别出更改。
我首先有一个像这样的插入语句
$query = 'INSERT INTO matches (uid, win) VALUES ($uid, $win)';
mysql_query($query) or die(mysql_error() . ' in ' . $query);
然后,在此之后,我有一个像
这样的选择语句$query = "SELECT * FROM matches where uid = $uid";
$resultmain = mysql_query($query) or die(mysql_error() . ' in ' . $query);
当然我简化了查询但是,这是一般的想法 - 会发生什么:select语句将无法识别在它之前运行的更新。但是,如果我重新加载页面,并且select语句在一段时间后再次运行,它会识别出更改。
我用Google搜索了这一点,并且对于没有遇到任何内容感到非常惊讶。有没有什么好的方法可以在选择之前强制等待mysql更新查询完成?如果没有,我可能只需要使用javascript自动重新加载页面,但这听起来像一个混乱的解决方案。
任何帮助都会非常感激,这让我疯狂......
- 安东尼
答案 0 :(得分:0)
这不应该发生。也许这是你的代码中的问题,你没有发布?
我的事情可能是问题:
2个查询在与MySQL数据库的不同连接上运行。并且未启用自动提交。
因此,第一个查询将发送更新但不提交,第二个查询将查询旧数据,并且只有在页面完成(/稍后)提交后才会发生。
我不太确定在PHP脚本结束时是否会提交或回滚非自动提交的更改,但它应该是回滚。因此,在您的代码中也需要稍后提交,以便应用这种可能的方案。