Возможно ли присвоить столбцу значение null после достижения даты exire?

#php #mysql

#php #mysql

Вопрос:

То, что я пытаюсь сделать, — это в основном система подписки, и я хочу, чтобы это было так, когда подписка пользователей закончилась (истек срок годности). Я хочу, чтобы он вернул группе пользователей значение registered, а также обновил столбец до NULL …. как бы я поступил по этому поводу? Я предполагаю, что с помощью cron

Но что бы я положил в cron.php ? Чтобы он проверил, истек ли срок его действия в таблице users?

Я уже пробовал:

 $sql22 = "SELECT `csgo`,`id`,`group_id`,`discord`,`username` FROM `users`";
$result2 = $db->query($sql22);

$datenow = date_create('now');

        foreach($result2 as $item) {
    $omyj = $item['username'];
        $sql229 = "SELECT `expire`,`username` FROM `bans` WHERE `username` = '$omyj'";
$result29 = $db->query($sql229);
         $row_cnt = $result29->num_rows;
        $dateend = date_create($item['csgo']);
            $diff = date_diff($datenow, $dateend);
            //$out = $diff->format("Minutes:%i");
            //print_r($datenow);
            $hisuid = $item['id'];
            
    if($diff->invert) {
        if($diff->days >= 3) {
        
            if($item['csgo'] != null amp;amp; $row_cnt==0){
            if($item['group_id'] == 5 || $item['group_id'] == 6){
                
            $sql31 = "UPDATE `users` SET `csgo` = NULL WHERE `id` = '$hisuid'";
             $result3 = $db->query($sql31);
             $sql314 = "UPDATE `users` SET `group_id` = '4' WHERE `id` = '$hisuid'";
             $result34 = $db->query($sql314);
            }
        }
    }
}
 

Комментарии:

1. вы могли бы попробовать использовать an Event в БД — настроить его на запуск каждые X минут и автоматическое обновление в зависимости от того, какие таблицы / записи требуются при выполнении критериев?

2. ПРЕДУПРЕЖДЕНИЕ : при использовании mysqli вы должны использовать параметризованные запросы и bind_param добавлять любые данные в свой запрос. НЕ используйте для этого интерполяцию или конкатенацию строк, поскольку вы создали серьезную ошибку SQL-инъекции . НИКОГДА не помещайте $_POST $_GET или данные любого типа непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.

3. Вот: планировщик событий .

4. @ProfessorAbronsius Как бы я справился с этим? Возможно, вы можете показать мне

5. Совет: Не объявляйте свой SQL как строку, а затем выполняйте ее. Просто отправьте запрос непосредственно в функцию. У вас есть все эти совершенно ненужные переменные, подобные $sql31 тем, которые не служат никакой полезной цели и значительно загромождают ваш код. Аналогично, перерабатывайте свои результирующие переменные, не утруждайте себя сохранением их повсюду. Это может занять массу памяти, так как они не могут быть освобождены до тех пор, пока на них больше не будут ссылаться.