2011-12-09 4 views
0

私は、私が取り組んでいるプロジェクトのための簡単な売買ウェブサイト(偽りの金でのみ)を構築しようとしています。ユーザがmysql文から正しい情報を取得できるようにしますか?

ユーザーは、話すように、自分の手や仮想銀行でお金を稼ぐことができます。

if ($_POST['deposit'] > 0 && $_POST['deposit'] <= $user['money']) { 
    $dbc -> beginTransaction(); 
    $dbc -> query("SELECT id FROM items WHERE id = " . $user['id'] . " FOR UPDATE LIMIT 1"); 
    $q = $dbc -> prepare("UPDATE items SET money = money-?, bank = bank+?"); 
    $q -> execute(array($_POST['deposit'], $_POST['deposit'])); 
    $dbc -> commit(); 
} 

その他のアカウントも、ユーザーの情報を表示することができ、そのようなお金の彼らの量として:ユーザーがif文PHPに包まれた自分のアカウントに彼らの手からお金を入金するとき、私は、このトランザクションを使用しています。アカウントにお金を入金しているときと同じように、アカウントでユーザーのデータが表示された場合、上記のクエリによってmySQLから正しい一貫性のあるデータが得られることを確認しますか?

アカウントからすべての情報を取得するには、を使用します。アカウントは、彼がお金を堆積されたと同じように、ユーザーのデータにアクセスする場合は

$dbc -> query("SELECT * FROM items WHERE id = " . $account['id'] . "); 

、MySQLのクエリは、更新された新しい行を待ちますか?すべてのクエリがプロジェクト全体で一貫していることを確認したい

また、SELECT FOR UPDATEクエリでLIMIT 1を使用しても問題ありませんか?

答えて

0

トランザクションの完全性のためにInnoDBを使用すると、必要なものが得られます。

LIMIT 1までは、実際にはテーブルを設計して、選択するために主キーを使用して更新用に複数の行を選択することは不可能です。

関連する問題