update table_xxx set a=a+1 where documentid=123
如果資料庫中為10 那麼 執行後就是11
但是最後結果總是12 ,我都鬱悶了一天了,怎麼辦。程式沒有任何問題,我用mysql類,和原生的sql都試過了,都這這個問題,以前開發的時候也沒有遇到,開發一年遇到這樣的問題有解決不了,感覺就是一飯桶,求大神指教
資料庫結構:
CREATE TABLE comment_top_foot (id int(10) NOT NULL AUTO_INCREMENT,documentid int(10) NOT NULL,commentid int(10) NOT NULL,topnum int(10) NOT NULL DEFAULT '0' COMMENT '對評論頂的數量',footnum int(10) NOT NULL DEFAULT '0' COMMENT '對評論踩的數量',PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=1500 DEFAULT CHARSET=latin1
剛才我在linux下運行指令碼了,資料庫中是加一的沒錯,但是我在瀏覽器訪問這個指令碼後資料庫值加2 的,這是神馬原因!
找到原因了,在同事那裡用瀏覽器是正常的,我換成Firefox或者ie也是正常的,現在用的是Google的,出問題了,唯一納悶的是為什麼Google瀏覽器會出問題。鬱悶。。。
回複內容:
update table_xxx set a=a+1 where documentid=123
如果資料庫中為10 那麼 執行後就是11
但是最後結果總是12 ,我都鬱悶了一天了,怎麼辦。程式沒有任何問題,我用mysql類,和原生的sql都試過了,都這這個問題,以前開發的時候也沒有遇到,開發一年遇到這樣的問題有解決不了,感覺就是一飯桶,求大神指教
資料庫結構:
CREATE TABLE comment_top_foot (id int(10) NOT NULL AUTO_INCREMENT,documentid int(10) NOT NULL,commentid int(10) NOT NULL,topnum int(10) NOT NULL DEFAULT '0' COMMENT '對評論頂的數量',footnum int(10) NOT NULL DEFAULT '0' COMMENT '對評論踩的數量',PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=1500 DEFAULT CHARSET=latin1
剛才我在linux下運行指令碼了,資料庫中是加一的沒錯,但是我在瀏覽器訪問這個指令碼後資料庫值加2 的,這是神馬原因!
找到原因了,在同事那裡用瀏覽器是正常的,我換成Firefox或者ie也是正常的,現在用的是Google的,出問題了,唯一納悶的是為什麼Google瀏覽器會出問題。鬱悶。。。
考慮下,你防重複提交邏輯做了沒有?
抓一下http請求,看看發了幾個請求過去了。
http://stackoverflow.com/questions/19264616/mysql-update-query-is-executing-twice-in-chrome-but-once-in-mozilla
https://codebuildplay.wordpress.com/2014/03/06/chrome-loads-page-twice-sitecore-dms-gets-faulty-usage-data/
能把代碼貼上來麼, 我在本地的測試正確的, 我是在mysql 命令列 裡面敲的
update ask_posts set state=state+1 where id=10;
得到的結果:
你應該把PHP代碼貼出來,問題很可能是在那