#1

PHP код:
CMD:setdblevel(playeridparams[])
{
    new 
account[24], Query[300], bString[128], levelCache:GetCacherows;
    if(
pData[playerid][Admin] == 10)
    {
        if(
sscanf(params"s[24]i"account,level)) return SendClientMessage(playeridCOLOR_RED"USAGE: /Setdblevel [Account] [Level]");
        if(
strlen(account) > 24) return SendClientMessage(playeridCOLOR_RED"ERROR: Player name cannot exceed 24 characters!");
        if(
level == || level 10 || level || level == 0) return SendClientMessage(playeridred"ERROR: Invalid Level [Levels 3 to 10 or 1]");
        
format(Querysizeof(Query), "SELECT * FROM `players` WHERE `Username` = '%s'"account);
        
GetCache mysql_query(mysqlQuery);
        
cache_get_row_count(rows);
        if(
rows == 1)
        {
            
format(Querysizeof(Query), "UPDATE `players` SET Admin=%d WHERE `Username` = '%s'"levelaccount);
            
mysql_tquery(mysqlQuery);
            
format(bStringsizeof(bString), "* You have succesfully set %s's level to %d."accountlevel);
            
SendClientMessage(playerid, -1bString);
        }
        else
        {
            
format(bStringsizeof(bString), "ERROR: Name %s doesn't exists in the database!"account);
            return 
SendClientMessage(playeridredbString);
        }
        
cache_delete(GetCache);
    }
    else return 
SendClientMessage(playeridCOLOR_YELLOW"Sorry, you are not high enough level to use this command.");
    return 
1;
}
CMD:query(playeridparams[])
{
    new 
account[24], Query[300], bString[128], level,kills,deaths,tokens,cash,racewonCache:GetCacherows;
    if(
pData[playerid][Admin] == 10)
    {
        if(
sscanf(params"s[24]iiiiii"account,level)) return SendClientMessage(playeridCOLOR_RED"USAGE: /query [Account] [Level] [Kills] [Deaths] [Tokens] [Cash] [RaceWon]");
        if(
strlen(account) > 24) return SendClientMessage(playeridCOLOR_RED"ERROR: Player name cannot exceed 24 characters!");
        if(
level == || level 10 || level || level == 0) return SendClientMessage(playeridred"ERROR: Invalid Level [Levels 3 to 10 or 1]");
        
format(Querysizeof(Query), "SELECT * FROM `players` WHERE `Username` = '%s'"account);
        
GetCache mysql_query(mysqlQuery);
        
cache_get_row_count(rows);
        if(
rows == 1)
        {
            
format(Querysizeof(Query), "UPDATE `players` SET Admin=%d, Kills=%d,Deaths=%d,Tokens=%d,Money=%d,RaceWon=%d WHERE `Username` = '%s'"level,kills,deaths,tokens,cash,racewon,account);
            
mysql_tquery(mysqlQuery);
            
format(bStringsizeof(bString), "* You have succesfully set %s's level to %d | Kills to %d | Deaths to %d | Tokens to %d | Money to $%d | RaceWon to %d."accountlevel,kills,deaths,tokens,cash,racewon);
            
SendClientMessage(playerid, -1bString);
        }
        else
        {
            
format(bStringsizeof(bString), "ERROR: Name %s doesn't exists in the database!"account);
            return 
SendClientMessage(playeridredbString);
        }
        
cache_delete(GetCache);
    }
    else return 
SendClientMessage(playeridCOLOR_YELLOW"Sorry, you are not high enough level to use this command.");
    return 
1;

Both commands are not working it doesn't change any thing on the player data
Reply
#2

Server logs

Код:
[22:20:29] sscanf warning: Strings without a length are deprecated, please add a destination size.
[22:20:29] sscanf warning: Format specifier does not match parameter count.
[22:20:31] sscanf warning: Strings without a length are deprecated, please add a destination size.
[22:20:31] sscanf warning: Format specifier does not match parameter count.
Reply
#3

Use mysql_format to format mysql queries!
Reply
#4

Use %e instead of %s to escape strings
Reply
#5

Quote:
Originally Posted by Logic_
Посмотреть сообщение
Use mysql_format to format mysql queries!
Instead of?
Quote:
Originally Posted by AndreiWow
Посмотреть сообщение
Use %e instead of %s to escape strings
Instead of?
Reply
#6

Wasn't I clear enough?


Use %e instead of %s to escape strings

In your mysql queries use %e for strings.
Like

.... WHERE Username = '%e'
Reply
#7

Quote:
Originally Posted by AndreiWow
Посмотреть сообщение
Wasn't I clear enough?


Use %e instead of %s to escape strings

In your mysql queries use %e for strings.
Like

.... WHERE Username = '%e'
PHP код:
CMD:setdblevel(playeridparams[])
{
    new 
account[24], Query[300], bString[128], levelCache:GetCacherows;
    if(
pData[playerid][Admin] == 10)
    {
        if(
sscanf(params"s[24]i"account,level)) return SendClientMessage(playeridCOLOR_RED"USAGE: /Setdblevel [Account] [Level]");
        if(
strlen(account) > 24) return SendClientMessage(playeridCOLOR_RED"ERROR: Player name cannot exceed 24 characters!");
        if(
level == || level 10 || level || level == 0) return SendClientMessage(playeridred"ERROR: Invalid Level [Levels 3 to 10 or 1]");
        
format(Querysizeof(Query), "SELECT * FROM `players` WHERE `Username` = '%e'"account);
        
GetCache mysql_query(mysqlQuery);
        
cache_get_row_count(rows);
        if(
rows == 1)
        {
            
format(Querysizeof(Query), "UPDATE `players` SET Admin=%d WHERE `Username` = '%e'"levelaccount);
            
mysql_tquery(mysqlQuery);
            
format(bStringsizeof(bString), "* You have succesfully set %s's level to %d."accountlevel);
            
SendClientMessage(playerid, -1bString);
        }
        else
        {
            
format(bStringsizeof(bString), "ERROR: Name %s doesn't exists in the database!"account);
            return 
SendClientMessage(playeridredbString);
        }
        
cache_delete(GetCache);
    }
    else return 
SendClientMessage(playeridCOLOR_YELLOW"Sorry, you are not high enough level to use this command.");
    return 
1;
}
CMD:query(playeridparams[])
{
    new 
account[24], Query[300], bString[128], level,kills,deaths,tokens,cash,racewonCache:GetCacherows;
    if(
pData[playerid][Admin] == 10)
    {
        if(
sscanf(params"s[24]iiiiii"account,level)) return SendClientMessage(playeridCOLOR_RED"USAGE: /query [Account] [Level] [Kills] [Deaths] [Tokens] [Cash] [RaceWon]");
        if(
strlen(account) > 24) return SendClientMessage(playeridCOLOR_RED"ERROR: Player name cannot exceed 24 characters!");
        if(
level == || level 10 || level || level == 0) return SendClientMessage(playeridred"ERROR: Invalid Level [Levels 3 to 10 or 1]");
        
format(Querysizeof(Query), "SELECT * FROM `players` WHERE `Username` = '%e'"account);
        
GetCache mysql_query(mysqlQuery);
        
cache_get_row_count(rows);
        if(
rows == 1)
        {
            
format(Querysizeof(Query), "UPDATE `players` SET Admin=%d, Kills=%d,Deaths=%d,Tokens=%d,Money=%d,RaceWon=%d WHERE `Username` = '%e'"level,kills,deaths,tokens,cash,racewon,account);
            
mysql_tquery(mysqlQuery);
            
format(bStringsizeof(bString), "* You have succesfully set %s's level to %d | Kills to %d | Deaths to %d | Tokens to %d | Money to $%d | RaceWon to %d."accountlevel,kills,deaths,tokens,cash,racewon);
            
SendClientMessage(playerid, -1bString);
        }
        else
        {
            
format(bStringsizeof(bString), "ERROR: Name %s doesn't exists in the database!"account);
            return 
SendClientMessage(playeridredbString);
        }
        
cache_delete(GetCache);
    }
    else return 
SendClientMessage(playeridCOLOR_YELLOW"Sorry, you are not high enough level to use this command.");
    return 
1;

Now when i type my name he can't get my name it says that it doesn't exists
Reply
#8

What version is your mysql? Also use mysql_format for %e to work.
Reply
#9

Just do the "set level" query and then check the results afterwards with affected_rows. If affected rows is 0 then the user doesn't exist, or they already have that level. If it returns 1 it was a success. If it returns more than 1 then your database is screwed up because then there are multiple users with the same name.
Reply
#10

Quote:
Originally Posted by AndreiWow
Посмотреть сообщение
What version is your mysql? Also use mysql_format for %e to work.
Mysql r41 and should i check by format and set by mysql_format
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)