Блокируйте ОБНОВЛЕНИЕ MySQL, если сделано - PullRequest
1 голос
/ 18 июня 2011

У меня проблема с обновлением MySQL.Приведенный ниже код работает, но я хочу заблокировать, чтобы другие пытались снова ввести данные в поле «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 голосов
/ 18 июня 2011

Есть несколько способов сделать это:

  1. Добавьте поле - IS_UPDATED - к вашей таблице, чтобы поддерживать какой-то флаг, который по умолчанию равен FALSE. Затем в своем запросе, который обновляет поле status, также установите для IS_UPDATED значение ИСТИНА. Кроме того, в запросе на обновление добавьте это условие в предложение where - IS_UPDATED = FALSE. Это будет означать, что столбец status будет обновляться только в том случае, если он еще не обновлен.

  2. Если поле upl_time изначально имеет значение NULL или не заполнено и обновляется только в приведенном выше запросе, при обновлении столбца status, я думаю, вы также можете использовать этот столбец вместо добавления нового один. Но это лучше известно вам.

  3. Я не уверен, каков источник запроса на обновление из вашего приложения. Но если это возможно, вы можете также рассмотреть возможность добавления логики в ваше приложение, чтобы вообще отключить ОБНОВЛЕНИЕ.

Я бы предпочел подход 1.

...