Php mySQL表更新,但速度不够快,无法让同一页面上的select语句访问更新-有什么想法吗?

Php mySQL表更新,但速度不够快,无法让同一页面上的select语句访问更新-有什么想法吗?,php,mysql,Php,Mysql,我试图编写一些代码来更新mysql表,然后在同一页中从同一个表中进行选择。但是,我发现当我执行更新查询,然后执行选择查询时,它无法识别更改。但是,如果我刷新了页面,那么它就会识别出这些更改 我首先有一个类似这样的insert语句 $query = 'INSERT INTO matches (uid, win) VALUES ($uid, $win)'; mysql_query($query) or die(mysql_error() . ' in ' . $query); 然后,在这之后,我

我试图编写一些代码来更新mysql表,然后在同一页中从同一个表中进行选择。但是,我发现当我执行更新查询,然后执行选择查询时,它无法识别更改。但是,如果我刷新了页面,那么它就会识别出这些更改

我首先有一个类似这样的insert语句

$query = 'INSERT INTO matches (uid, win) VALUES ($uid, $win)';

mysql_query($query) or die(mysql_error() . ' in ' . $query);
然后,在这之后,我有一个select语句,如

$query = "SELECT * FROM matches where uid = $uid";

$resultmain = mysql_query($query) or die(mysql_error() . ' in ' . $query);
当然,我简化了查询,但这是一般的想法——发生的情况是:select语句将无法识别在它之前运行的更新。但是,如果我重新加载页面,并且select语句在一段时间后再次运行,它会识别更改

我在谷歌上搜索了一下,很惊讶没有发现任何东西。有没有什么好方法可以强制等到mysql更新查询完成后再选择?如果不是,我可能只需要使用javascript自动重新加载页面,但这听起来像是一个混乱的解决方案

任何帮助都将不胜感激,这让我发疯


--安东尼

这不应该发生。可能是你的代码有问题,你没有发布

我遇到的问题可能是:

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

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


我不确定当PHP脚本结束时,是否会提交或回滚非自动提交的更改,但它应该是回滚。因此,您的代码中也需要稍后的提交才能应用此可能的场景。

这不应该发生。也许这是您的代码中的一个问题,您没有发布这个问题?但是,在禁用自动提交的实例中,第二个查询不会挂起吗?因为第一个查询永远不会释放行上的锁?嘿,kissaki,你是对的,我有一些其他查询的顺序,这些查询干扰了这一个,把事情搞砸了。我对它重新排序,现在它识别了它。谢谢你的意见,因为这让我走上了正确的道路。如果不启用自动提交功能,将来会不会导致此类设计出现问题?我以前没听说过,但如果你认为它值得研究并添加到我的网站上,我会很感激你的提示:)@Jaitsu:这取决于DBS将使用什么策略。通常不会。对于大多数数据库,读取数据库没有限制。将不会读取未提交的更改,而是读取最近提交的状态。锁定所有内容策略对性能和并发性非常有害。只有在发生两次写操作时,才有真正的策略生效,这取决于如何处理它们。(较新的删除了?覆盖了?…)@Anthony:自动提交是更容易的方法。尤其是初学者,使用它会更好。但是,如果您想要控制提交(保存,从而在数据库中生存)的数据,您需要禁用它并手动提交。如果在达到要提交的稳定总体状态之前必须更改多个查询中的数据,则情况尤其如此。典型示例:从一个帐户向另一个帐户转账。您不希望从一个帐户中删除资金,然后发生一些事情(冲突、崩溃…)。你只想在两个成功之后提交对数据库的更改。因为这个答案很好地回答了你的问题,并且你的问题被解决了,请考虑把它标记为你的问题的答案,从而标记这个问题得到解决。