2012-02-13 13 views
1

私のPHPセッションは、MySQLデータベースでセッションテーブルInnoDBタイプで実装されています。MySQL Innodbセッションテーブル:更新クエリで一致が見つかりません

PHPスクリプトの同じ実行中に、セッションテーブルに新しい行が追加されていますが、私はUPDATE文を実行できません。 mysql_info()はマッチした行が0件だったので、見つからなかったことを報告します。しかし、手動チェックでは、テーブルに行が存在することが示されます。

私が後続のPHPスクリプトで実行すると、UPDATE文が機能します。

また、MyISAMに切り替えると間違いなくInnoDB型と関係があります。私は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

失敗したクエリの例を挙げることはできますか? –

答えて

0

これはタイミングの問題ではありますか?

例: 2つのPHPスクリプトを連続して実行します(Webサイトなど)。 スクリプトの1つが完了し、セッションデータの書き込みを開始します。セッションデータの書き込みが完了する前に2番目のセッションが開始され、DBから「現在の」セッション情報が読み込まれます。 InnoDBでは、2番目のスクリプトは古いセッションデータを取得します。

非同期システムが大好きですか?

+1

例の代わりに、より正確で「実践的」なアプローチに答えを編集することができます。 – Tom

関連する問題