Возникли проблемы с тем, чтобы позволить людям БУМАТЬ уникальную запись

0

Итак, в моей таблице есть куча кодов, и я не хочу больше одного кода в таблице, поэтому у меня это как "UNIQUE". Но, в то же время, я хочу, чтобы они могли каждый раз ударять свой код.

function some_more_custom_content() {

    $output="<BR>";

    ob_start();

    if ($_REQUEST['code'] != "") {
        $code = $_REQUEST['code'];
        $query="INSERT INTO `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())";
        $result=mysql_query($query) or die(mysql_error());
        $seconds = time() - strtotime($fetch_array["datetime"]);
        if($sql){
            echo("Intserted " . htmlentities($code) ." into the top.");
        }else{
            if ($seconds < 60*60) {
                echo ("The code " . htmlentities($code) ." was updated less than an hour ago.");
         } else {
                $query="DELETE FROM `fc` (`code`,`datetime`) values ('" . mysql_real_escape_string($code) . "', now())";
                echo ("Inserted " . htmlentities($code) ." into the top.");
        }

    }}

Теперь я попытался получить его так, чтобы при работе кода он представлял код как нормальный, который, я думаю, работает.

Теперь, если он получает код, который уже существует, я получаю дублируемую ошибку "Дублировать запись" Боб "для ключа 1"

Но я просто хочу, чтобы он удалил старый запрос, который он нашел, и повторно отправить, если прошло больше часа с момента последнего отправления.

Любые идеи, что я делаю неправильно?

  • 0
    Кстати, вы должны были добавить это к своим предыдущим вопросам, а не открывать новый
  • 0
    Сколько раз вы задавали один и тот же вопрос? stackoverflow.com/questions/1241649/… stackoverflow.com/questions/1236386/…
Теги:

2 ответа

1

Вы можете просто обновить поле даты/времени в базе данных, чтобы отразить время "рельефа".

if ($_REQUEST['code'] != "")
{
    $code = $_REQUEST['code'];

    $sql = "SELECT * FROM fc WHERE code = '" . mysql_real_escape_string($code) . "'";

    $result = mysql_query($sql);
    if (mysql_num_rows($result))
    {
        $row = mysql_fetch_array($result);
        $seconds = time() - strtotime($row["datetime"]);

        if ($seconds > 60*60)
        {
            $sql = "UPDATE fc SET datetime = NOW() WHERE code = '" . mysql_real_escape_string($code) . "'";

            mysql_query($sql);
            echo("Intserted " . htmlentities($code) ." into the top.");
        }
        else
        {
            echo ("The code " . htmlentities($code) ." was updated less than an hour ago.");
        }
    }
    else
    {
        $sql = "INSERT INTO fc (code, datetime) VALUES ('" . mysql_real_escape_string($code) . "', NOW())";

        mysql_query($sql);
        echo("Intserted " . htmlentities($code) ." into the top.");
    }
}

(Я, вероятно, не должен переписывать ваш код для вас, и есть еще несколько улучшений, которые могут быть сделаны, но это отражает лучшие изменения, которые я могу внести с минимальными изменениями (это имеет смысл?))

  • 0
    Можете ли вы показать мне, как?
  • 0
    ооо хорошая идея, как мне это сделать?
Показать ещё 1 комментарий
0

Фрэнк, вам не нужны два разных запроса

$query="INSERT INTO `fc` (`code`,`datetime`) 
         values ('" . mysql_real_escape_string($code) . "', now())
         ON DUPLICATE KEY UPDATE datetime = case when now() - interval 1 hour > `datetime` 
                                      then NOW() 
                                      else `datetime` 
                                         end";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню