如果完成,则阻止MySQL UPDATE

时间:2011-06-18 14:35:48

标签: mysql block

我有MySQL更新问题。下面的代码正在运行,但我想阻止其他人尝试再次输入Data at field“status”。

我如何为此编写命令?

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 个答案:

答案 0 :(得分:0)

有几种方法可以这样做:

  1. 在表中添加一个字段 - IS_UPDATED - 以维护某种默认为FALSE的标志。然后在您的查询中更新status字段,同时将IS_UPDATED设置为TRUE。此外,在更新查询中,将此条件添加到where子句 - IS_UPDATED = FALSE。这意味着status列只会在尚未更新时才会更新。

  2. 如果字段upl_time最初为NULL或为空,并且仅在上述查询中更新,则更新status列时,我认为您也可以使用此列添加一个新的。但是你更了解这一点。

  3. 我不确定应用程序中更新查询的来源是什么。但是如果可能的话,您也可以考虑在应用程序中添加逻辑以完全禁用UPDATE。

  4. 我更喜欢方法1.