Mysql Удаление аккаунта -
KriD - 16.07.2012
Вообщем планирую сделать, если игрок не заходил на сервер более 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.)
Не подскажете как исправить?
Re: Mysql Удаление аккаунта -
Stepashka - 16.07.2012
Как я понял у тебя в `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);
И прежде чем использовать мускул стоило наверно изучить синтаксис его языка!
Re: Mysql Удаление аккаунта -
KriD - 16.07.2012
Спасибо
Stepashka.