Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果完成,则阻止MySQL更新_Mysql_Block - Fatal编程技术网

如果完成,则阻止MySQL更新

如果完成,则阻止MySQL更新,mysql,block,Mysql,Block,我对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().

我对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;
}

有几种方法可以做到这一点:

  • 在表中添加一个字段-
    已更新
    ,以维护某种默认为FALSE的标志。然后在更新
    状态
    字段的查询中,也将
    已更新
    设置为TRUE。此外,在更新查询中,将此条件添加到where子句-
    IS\u UPDATED=FALSE
    。这意味着
    状态
    列只有在尚未更新时才会更新

  • 如果字段
    upl\u time
    最初为空,并且仅在上述查询中更新,那么当更新
    status
    列时,我认为您也可以使用此列,而不是添加新列。但你更清楚这一点

  • 我不确定应用程序中更新查询的来源。但是如果可能的话,你也可以考虑将逻辑添加到应用程序中,以完全禁用更新。


  • 我更喜欢方法1。

    所以您希望数据库中的某个特定字段永远保持不变,拒绝其上的所有后续更新?在表中创建具有某个名称(例如更新)的新字段,默认值为0。然后在第一次更新后将该字段设置为1。每次都可以检查该值是否为0。