mySQL表更新,但不足以让同一页面上的select语句访问更新 - 任何想法?

时间:2011-02-18 09:07:27

标签: php mysql

我正在尝试编写一些更新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自动重新加载页面,但这听起来像一个混乱的解决方案。

任何帮助都会非常感激,这让我疯狂......

- 安东尼

1 个答案:

答案 0 :(得分:0)

这不应该发生。也许这是你的代码中的问题,你没有发布?

我的事情可能是问题:

2个查询在与MySQL数据库的不同连接上运行。并且未启用自动提交。

因此,第一个查询将发送更新但不提交,第二个查询将查询旧数据,并且只有在页面完成(/稍后)提交后才会发生。

我不太确定在PHP脚本结束时是否会提交或回滚非自动提交的更改,但它应该是回滚。因此,在您的代码中也需要稍后提交,以便应用这种可能的方案。