查询同步mysql

时间:2015-04-14 18:41:53

标签: php mysql database

我是网络编程的新手,我正在创建一个网站,我需要知道这件事: 我有一个带有计数器的数据库和一个更新它的php页面。 ES

//in pseudo code
n = get_counter_from_db(); //calls select*from table....
n+=1;
//do something with n without modifing it
update_counter_in();//calls update table set counter=n....

我的问题是: 如果两个pc同时运行这个页面,那么计数器可能只会被一个更新,因为它会发生下一个事情吗?

//counter = 0
pc1 gets the counter, n = 0 and adds 1 n = 1
pc2 gets the counter, n= 0 and adds 1 n = 1
pc1 updates the counter, counter = 1
pc2 updates the counter, counter = 1

或者服务器一个接一个地处理这两个页面?或者mySQL不会让这种情况发生?怎么样?而且,为了学习庇护,这两个查询将如何运作? (抱歉英语不好)

1 个答案:

答案 0 :(得分:0)

更好地使用update_counter_in中的增量:

UPDATE `tablename` SET `yourfield` = `yourfield` + $incValue WHERE ...;

而不是

UPDATE `tablename` SET `yourfield` = $newValue WHERE ...;

这可以防止你的例子出现竞争状况。