MySQL didn't insert data
#1

Hi, I'm trying to write a command for ban a player, technically only insert: username, the ban reason, name of admin, date and ip.

But when i insert the command in game, everything goes ok, but for the insert the data in the table don't work,
how can I fix that?

p.s: the part for if the target player is own player, I make like this in the comment for testing che cmd
My version of MySQL is r41 with zcmd, easydialog, foreach, sscanf and streamer
pawn Код:
CMD:ban(playerid, params[])
{   // admin lv: >=3 (moderatore)
    new TargetPlayer, banreason[128], str[128];
    if(Player[playerid][Admin] >= 3)
    {
        if(sscanf(params, "us[128]", TargetPlayer, banreason)) return SendClientMessage(playerid, COLOR_SYSTEM_ADMIN, "[COMANDO] Uso: /remoteban [Utente] [Motivo ban]");
        if(isvoid(banreason))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Devi inserire il motivo del ban per: %s", Player[TargetPlayer][RPName]);
            SendClientMessage(playerid, -1, str);
            return 1;
        }/*
        if(TargetPlayer == playerid)
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Non puoi bannare te stesso!");
            SendClientMessage(playerid, -1, str);
            return 1;
        }*/

        if(!IsPlayerConnected(TargetPlayer))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Giocatore non trovato{FFFF}, se registrato al server usa /remoteban");
            SendClientMessage(playerid, -1, str);
            return 1;
        }
        if(TargetPlayer != INVALID_PLAYER_ID)
        {
            // messaggio all'admin
            format(str, sizeof(str), "{FFFFFF}[INFO]: Hai appena bannato: {AFAFAFAF}%s", Player[TargetPlayer][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FFFFFF}[INFO]: Motivo: {FF0000}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);

            // messaggio all'utente bannato
            format(str, sizeof(str), "{FF0000}[BAN]: Sei Stato bannato da: {FFFF00}%s", Player[playerid][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FF0000}[BAN]: Motivo: {FFFF00}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);

            new banquery[256];
            mysql_format(g_SQL, banquery, sizeof banquery,
            "INSERT INTO 'bans' ('username', 'bannedby', 'reason', 'date', 'ip?) VALUES ('%e', '%e', '%e', '%e', '%e')",
            Player[TargetPlayer][Name], Player[playerid][Password], banreason, ReturnDate(), Player[TargetPlayer][LastIP]);
            mysql_tquery(g_SQL, banquery);
            DelayedKickTime(TargetPlayer, 1500); // 1,5 secondi
            return 1;
        }
    }
    else if(Player[playerid][Admin] < 3)
    {
        SendErrorMessage(playerid, ERROR_ADMIN_LEVEL);
        return 1;
    }
    else if(Player[playerid][Admin] == 0)
    {
        SendErrorMessage(playerid, ERROR_ADMIN);
        return 1;
    }
    return 1;
}
Reply
#2

A parte che il comando и per il 50% sbagliato, mostra il mysql.log
Reply
#3

try this:
Код:
mysql_format(g_SQL, banquery, sizeof banquery,
            "INSERT INTO `bans` (`username`, `bannedby`, `reason`, `date`, `ip`) VALUES ('%e', '%e', '%e', '%e', '%e')",
            Player[TargetPlayer][Name], Player[playerid][Password], banreason, ReturnDate(), Player[TargetPlayer][LastIP]);
            mysql_tquery(g_SQL, banquery);
Reply
#4

Oh i wrote the command wrong, sorry i didn't see that, this is the correct code. whit the code that L0K3D give me.
And the problem didn't fixed :\
(sorry for my bad English)
pawn Код:
CMD:ban(playerid, params[])
{   // admin lv: >=3 (moderatore)
    new TargetPlayer, banreason[128], str[128];
    if(Player[playerid][Admin] >= 3)
    {
        if(sscanf(params, "us[128]", TargetPlayer, banreason)) return SendClientMessage(playerid, COLOR_SYSTEM_ADMIN, "[COMANDO] Uso: /remoteban [Utente] [Motivo ban]");
        if(isvoid(banreason))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Devi inserire il motivo del ban per: %s", Player[TargetPlayer][RPName]);
            SendClientMessage(playerid, -1, str);
            return 1;
        }/*
        if(TargetPlayer == playerid)
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Non puoi bannare te stesso!");
            SendClientMessage(playerid, -1, str);
            return 1;
        }*/

        if(!IsPlayerConnected(TargetPlayer))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Giocatore non trovato{FFFF}, se registrato al server usa /remoteban");
            SendClientMessage(playerid, -1, str);
            return 1;
        }
        if(TargetPlayer != INVALID_PLAYER_ID)
        {
            // messaggio all'admin
            format(str, sizeof(str), "{FFFFFF}[INFO]: Hai appena bannato: {AFAFAF}%s", Player[TargetPlayer][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FFFFFF}[INFO]: Motivo: {FF0000}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);

            // messaggio all'utente bannato
            format(str, sizeof(str), "{FF0000}[BAN]: Sei Stato bannato da: {FFFF00}%s", Player[playerid][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FF0000}[BAN]: Motivo: {FFFF00}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);


//                     da qua non inserisce niente non so perchй/ here don't insert nothing idk why                          
            new banquery[256];
            mysql_format(g_SQL, banquery, sizeof banquery,
            "INSERT INTO `bans` (`username`, `bannedby`, `reason`, `date`, `ip`) VALUES ('%s', '%s', '%s', '%s', '%s')",
            Player[TargetPlayer][Name], Player[TargetPlayer][RPName], banreason, ReturnDate(), Player[TargetPlayer][LastIP]);
            mysql_tquery(g_SQL, banquery);
            DelayedKickTime(TargetPlayer, 1500); // 1,5 secondi
            return 1;
        }
    }
    else if(Player[playerid][Admin] < 3)
    {
        SendErrorMessage(playerid, ERROR_ADMIN_LEVEL);
        return 1;
    }
    else if(Player[playerid][Admin] == 0)
    {
        SendErrorMessage(playerid, ERROR_ADMIN);
        return 1;
    }
    return 1;
}
Reply
#5

Ma mostra il mysql log no?
Reply
#6

Guys I fixed...Its because the timer of 1.5 seconds, is too short, and I inserted a timer at 5 sec.
I have tryied that and work, this is the code.
pawn Код:
CMD:ban(playerid, params[])
{   // admin lv: >=3 (moderatore)
    new TargetPlayer, banreason[128], str[128], banquery[256];
    if(Player[playerid][Admin] >= 3)
    {
        if(sscanf(params, "us[128]", TargetPlayer, banreason)) return SendClientMessage(playerid, COLOR_SYSTEM_ADMIN, "[COMANDO] Uso: /remoteban [Utente] [Motivo ban]");
        if(isvoid(banreason))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Devi inserire il motivo del ban per: %s", Player[TargetPlayer][RPName]);
            SendClientMessage(playerid, -1, str);
            return 1;
        }
        if(TargetPlayer == playerid)
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Non puoi bannare te stesso!");
            SendClientMessage(playerid, -1, str);
            return 1;
        }
        if(!IsPlayerConnected(TargetPlayer))
        {
            format(str, sizeof(str), "{FF0000}[ERRORE]: Giocatore non trovato{FFFFFF}, se registrato al server usa /remoteban");
            SendClientMessage(playerid, -1, str);
            return 1;
        }
        if(TargetPlayer != INVALID_PLAYER_ID)
        {   // messaggio all'admin
            format(str, sizeof(str), "{FFFFFF}[INFO]: Hai appena bannato: {AFAFAF}%s", Player[TargetPlayer][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FFFFFF}[INFO]: Motivo: {FF0000}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);
            // messaggio all'utente bannato
            format(str, sizeof(str), "{FF0000}[BAN]: Sei Stato bannato da: {FFFF00}%s", Player[playerid][RPName]);
            SendClientMessage(TargetPlayer, -1, str);
            format(str, sizeof(str), "{FF0000}[BAN]: Motivo: {FFFF00}%s", banreason);
            SendClientMessage(TargetPlayer, -1, str);

            mysql_format(g_SQL, banquery, sizeof(banquery),
            "INSERT INTO `bans` (`username`, `bannedby`, `banreason`, `date`, `ip`) VALUES ('%s', '%s', '%s', '%s', '%s')",
            Player[TargetPlayer][Name],
            Player[playerid][Name],
            banreason,
            ReturnDate(),
            Player[TargetPlayer][LastIP]);
            mysql_tquery(g_SQL, banquery);

            DelayedKickTime(TargetPlayer, 5000); // 1,5 secondi
            return 1;
        }
        return 1;
    }
    else if(Player[playerid][Admin] < 3)
    {
        SendErrorMessage(playerid, ERROR_ADMIN_LEVEL);
        return 1;
    }
    else if(Player[playerid][Admin] == 0)
    {
        SendErrorMessage(playerid, ERROR_ADMIN);
        return 1;
    }
    return 1;
}
Reply
#7

To be honest, if 1,5 seconds is not enough to run a simple INSERT query, you might have a more serious problem somewhere else, possibly in your database or in your MySQL plug-in. A query like that should take no more than a few milliseconds to run. Glad you found a solution, though.
Reply
#8

Quote:
Originally Posted by Markski
Посмотреть сообщение
To be honest, if 1,5 seconds is not enough to run a simple INSERT query, you might have a more serious problem somewhere else, possibly in your database or in your MySQL plug-in. A query like that should take no more than a few milliseconds to run.
Exactly. Not more than 20-30 ms are required to run a simple INSERT query...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)