2012-02-13 29 views
1

我的PHP會話是在MySQL數據庫上實現的,會話表InnoDB類型。MySQL Innodb會話表:更新查詢找不到匹配

在PHP腳本的執行一樣,我注意到一個新行已在會話表中增加了,但我不能做一個UPDATE語句。 mysql_info()報告有0匹配的行,所以它從來沒有找到它!但手動檢查顯示該表存在該行。

的事情是,如果我在隨後的PHP腳本運行UPDATE語句工作。

它也肯定有做的InnoDB的類型,因爲一旦切換到MyISAM數據,它工作正常。我是InnoDB表類型的新手,在處理InnoDB表時需要知道些什麼?行級鎖定?

[編輯:還有沒有正在運行的UPDATE語句時MySQL返回錯誤]

[編輯,例如SQL查詢]

"UPDATE session SET user_id='" . mysql_real_escape_string($user_id) . "' WHERE session_id='" . mysql_real_escape_string(session_id()) . "'"; 

任何幫助,非常感謝! 謝謝。

+0

你可以舉出失敗的查詢的例子嗎? – 2012-02-13 01:50:55

回答

0

這可能是一個計時問題?

舉個例子: 採取了在快速連續(例如網站)運行兩個PHP腳本。 其中一個腳本完成並開始寫入會話數據,第二個腳本在會話數據完成寫入之前開始,並從數據庫讀取「當前」會話信息。 使用InnoDB,第二個腳本將獲得舊會話數據。

難道你不喜歡異步系統。

+1

你可以編輯你的答案,以便更精確和'手上'的方法,而不是一個例子。 – Tom 2012-09-18 12:17:59