2011-06-18 13 views
1

MySQLのアップデートに問題があります。以下のコードは動作していますが、他の人がField "status"で再びデータを入力しようとしているのをブロックしたいと思います。完了したらMySQLの更新をブロックする

どのようにコマンドを書くことができますか?

if(isset($_GET['up'])) 
{ 
    if(strlen($_GET['up'])==71) 
    { 
    db_conn(); 
    $raw = explode(":",$_GET['up']); 
    $sql = "UPDATE ".$database_table." SET status='".$raw[1]."',upl_time='".time()."' WHERE hash='".$raw[0]."' LIMIT 1"; 
    if(mysql_query($sql)) 
    { 
    print "ACK"; 
    } 
    else 
    print "NACK"; 

    } 
    exit; 
} 
+1

を好むだから、それ以降のすべてのUPDATEのその上を拒否し、それが永遠であるように滞在するデータベース内の特定のフィールドをしたいですか? – NOtherDev

+0

テーブルに新しいフィールドを作成して、デフォルト値の0で名前を付けます(更新など)。最初の更新後、このフィールドを1に設定します。値が0であるかどうかを毎回確認できます。 –

答えて

0

は、いくつかの方法がそうすることがあります。

  1. は、フィールドの追加 - IS_UPDATEDを - あなたのテーブルにフラグをFALSEにデフォルト設定のいくつかの並べ替えを維持します。その後、statusフィールドを更新するクエリでは、IS_UPDATEDもTRUEに設定します。また、更新クエリでは、この条件をwhere句に追加します(IS_UPDATED = FALSE)。これは、status列がまだ更新されていない場合にのみ更新されることを意味します。

  2. フィールドupl_timeが元々NULLまたは空で、上記のクエリでのみ更新されている場合は、status列が更新されると、新しい列を追加する代わりにこの列を使用することもできます。しかしこれはあなたによってよく知られています。

  3. アプリケーションからの更新クエリの起源がわかりません。しかし、可能であれば、アプリケーションにロジックを追加して、UPDATEを完全に無効にすることを検討することもできます。

私はアプローチ1.

関連する問題