Mysql Удаление аккаунта
#1

Вообщем планирую сделать, если игрок не заходил на сервер более 30 дней, то аккаунт удаляется.
Вот как я это пытался реализовать:
PHP код:
        new query[100],string[20],Id,bantime;
    
mysql_query("SELECT `ID`,`LastDay` FROM `User` WHERE LastDay >= '0'");
    
mysql_store_result();
    if(
mysql_num_rows())
    {
        for(new 
i;i<mysql_num_rows();i++)
        {
             
mysql_get_field("LastDay"string);
            
bantime strval(string);
            
mysql_get_field("ID"string);
            
Id strval(string);
            if(
getdate()- bantime 30)
            {
                 
format(query,sizeof(query),"DELETE FROM `User` WHERE `ID`='%d'",Id);
                 
mysql_query(query);
             }
         }
    }
    
mysql_free_result(); 
Но аккаунт не удаляется, появляется ошибка о том, что в данный момент нельзя использовать mysql_get_field, причина поля пусты.
CMySQLHandler::FetchField(ID) - You cannot call this function now. (Reason: Fields/Rows are empty.)
Не подскажете как исправить?
Reply
#2

Как я понял у тебя в `LastDay` хранится день от начала года, тогда так:
pawn Код:
new query[100], year, month, day;
    getdate(year, month, day);
    format(query, sizeof(query), "DELETE FROM `User` WHERE DAYOFYEAR('%d-%02d-%02d') - `LastDay` -  >= '%d'", year, month, day, 30);
    mysql_query(query);
но будет косяк с декабрем и январем!
Поэтому рекомендую переделать систему на timestamp:
pawn Код:
new query[100];
    format(query, sizeof(query), "DELETE FROM `User` WHERE UNIX_TIMESTAMP() - `LastDay` -  >= '%d'", 30 * (24 * 60 * 60));
    mysql_query(query);
И прежде чем использовать мускул стоило наверно изучить синтаксис его языка!
Reply
#3

Спасибо Stepashka.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)