MySQL big problem!
#1

pawn Код:
CMD:unban(playerid, params[])
{
    new target[24],query[200];
    if(!IsPlayerAdmin(playerid) || Player[playerid][Admin] >= 3) return SendClientMessage(playerid, -1, "SERVER:You're not admin!");
    if(sscanf(params,"s[24]",target)) return SendClientMessage(playerid, -1, "SERVER:/unban [Name]");
    mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%s' LIMIT 1", target);
    mysql_tquery(SQL, query, "OnUnbanCheck","d",playerid);
    return 1;
}


forward OnUnbanCheck(playerid);
public OnUnbanCheck(playerid)
{
    if(cache_num_rows() > 0)
    {
        cache_get_field_content(0, "bannedby", Player[playerid][BannedBy], SQL, 24);
        cache_get_field_content(0, "reason", Player[playerid][BanReason], SQL, 20);
        Player[playerid][Banned] = cache_get_field_content_int(0, "banned");
        UpdateBans(playerid);
    }
    return 1;
}

stock UpdateBans(playerid, params[])
{
    new target[MAX_PLAYER_NAME], str[128], query[200];
    if(Player[playerid][Banned] == 1)
    {
        mysql_format(SQL,query, sizeof(query),"UPDATE `players` SET `banned` = '0' WHERE `username` = '%s' LIMIT 1", target);
        mysql_tquery(SQL, query, "", "");
        print(query);
        SendClientMessage(playerid, -1, "SERVER:Done!");
    }
    else
    {
        format(str, 128,"[MySQL]:This player is not registered.");
        SendClientMessage(playerid, -1, str);
    }
    return 1;
}
If i type the unban command it will run the query but it wont run what i typed it will go empty like this
pawn Код:
UPDATE `players` SET `banned` = '0' WHERE `username` = '' LIMIT 1
Reply
#2

Do it like this
pawn Код:
@OnUnbanCheck(playerid, name[]);
@OnUnbanCheck(playerid, name[])
{
    if(cache_num_rows() > 0)
    {
        if(cache_get_field_content_int(0, "banned"))
        {
            new query[128];
            mysql_format(SQL,query,sizeof(query),"UPDATE `players` SET `banned` = 0 WHERE `username` = '%s' LIMIT 1", name);
            mysql_tquery(SQL,query,"","");
            print(query);
            SendClientMessage(playerid, -1, "Done!");
        }//else not banned
    }
    else
        SendClientMessage(playerid, -1, "This player is not registered.");

    return;
}

CMD:unban(playerid, params[])
{
    if(!IsPlayerAdmin(playerid) || Player[playerid][Admin] >= 3) SendClientMessage(playerid, -1, "SERVER:You're not admin!");
    else if(isnull(params)) SendClientMessage(playerid, -1, "SERVER:/unban [Name]");
    else if(!(2 < strlen(params) < 21)) SendClientMessage(playerid, -1, "ERROR: Name must be between 3-20 characters");
    else{
        new query[128];
        mysql_format(SQL, query, sizeof(query), "SELECT * FROM `players` WHERE `username` = '%e' LIMIT 1", params);
        mysql_tquery(SQL, query, "@OnUnbanCheck", "is", playerid, params);
    }
    return 1;
}
That way you get to escape string in the unban cmd.
Reply
#3

Thanks worked!! +rep!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)