SA-MP Forums Archive
mysql /changename cmd bug? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: mysql /changename cmd bug? (/showthread.php?tid=281039)



mysql /changename cmd bug? - BlackWolf120 - 04.09.2011

hi,

just wondering why this /changename command wont work.
it prints this error in the log:

Код:
[MySQL] Error (0): Failed to exeute query. Unknown column 'The name i entered' in 'field list'.
heres the code:

pawn Код:
dcmd_changename(playerid,params[])
{
if(Spieler[playerid][AdminLevel] > 2)
{
    new pID,pname[24],newname[24];
    if(sscanf(params, "ds[24]",pID,newname))return SendClientMessage(playerid,0xFF0000FF,"Usage: /changename [ID][New Name]");
    if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,0xFF0000FF,"This PlayerId is invalid!");

    GetPlayerName(pID,pname,24);
    new query1[256],escapename[24];
    mysql_real_escape_string(newname, escapename);
    format(query1, sizeof(query1), "SELECT name FROM `Users` WHERE name = '%s' LIMIT 1", escapename);
    mysql_query(query1);
    mysql_store_result();
    new rows = mysql_num_rows();
    if(!rows)
    {
    new query[256];
    format(query, sizeof(query), "UPDATE Users SET name=%s WHERE name ='%s'",escapename,pname);
    mysql_query(query);
    SetPlayerName(pID,escapename);
    new levelsetter[MAX_PLAYER_NAME],adminstring[128];
    GetPlayerName(playerid,levelsetter,sizeof(levelsetter));
    format(adminstring,sizeof(adminstring),"Admin * %s * has changed your name to %s!",levelsetter, newname);
    SendClientMessage(pID,0xFF0000FF, adminstring);
    SendClientMessage(playerid, 0xFF0000FF, "You have changed the name successfully.");
    }
    else if(rows == 1)
    {
    SendClientMessage(playerid, 0xFF0000FF, "This name already exists!");
    }
    mysql_free_result();
   
}else return SendClientMessage(playerid, 0xFF0000FF, "You don't have permission to use this command!");
return 1;
}
Would be great if someone could tell me the solution


Re: mysql /changename cmd bug? - [HiC]TheKiller - 04.09.2011

Could you print the 2 query strings after the format and post them here?

EDIT: Also make sure that the user is in the database before using the Update query.


Re: mysql /changename cmd bug? - BlackWolf120 - 04.09.2011

i only escape the one name cause the other name is not entered by the user but stored with GetPlayerName.
So why should i escape that one?

Also i SELECT only once so why should i free it before i update the query?
UPDATE does not need any storage or free as far as i know

Please apologize if im wrong but im quite new to mysql stuff

And if i wanna change to a name that is already existing it works, it shows me that i cant change it cause it already exists.

So id say u need only the second query printed?

And thx for ur answer

//edit


here u go
Код:
[03:36:12] [join] BlackWolf has joined the server 

[03:36:29] SELECT name FROM `Users` WHERE name = 'test' LIMIT 1

[03:36:29] [MySQL] Error (0): Failed to exeute query. Unknown column 'test' in 'field list'.

[03:36:29] UPDATE Users SET name=test WHERE name ='BlackWolf'

[03:36:29] [nick] BlackWolf nick changed to test

[03:36:36] [part] test has left the server (0:1)



Re: mysql /changename cmd bug? - =WoR=Varth - 04.09.2011

pawn Код:
format(query1, sizeof(query1), "SELECT name FROM `Users` WHERE name = '%s' LIMIT 1",pname);



Re: mysql /changename cmd bug? - Hiddos - 04.09.2011

Are you connected to the right database/using the right table/field name?

Код:
[MySQL] Error (0): Failed to exeute query. Unknown column 'The name i entered' in 'field list'.
+
[03:36:29] [MySQL] Error (0): Failed to exeute query. Unknown column 'test' in 'field list'.
Those are very weird names if you'd ask me 0.o

PS: I also recommend you not to use spaces in names.


Re: mysql /changename cmd bug? - Vince - 04.09.2011

If you use these ` characters, you need to be consequent and wrap 'm around field names too. Furthermore, literal strings should always be enclosed by single quotes '. This should work:

Код:
SELECT `name` FROM `Users` WHERE `name` = '%s' LIMIT 1

UPDATE `Users` SET name = '%s' WHERE `name` ='%s'



Re: mysql /changename cmd bug? - Jeffry - 04.09.2011

pawn Код:
dcmd_changename(playerid,params[])
{
    if(Spieler[playerid][AdminLevel] > 2)
    {
        new pID,pname[24],newname[24];
        if(sscanf(params, "ds[24]",pID,newname))return SendClientMessage(playerid,0xFF0000FF,"Usage: /changename [ID][New Name]");
        if(pID == INVALID_PLAYER_ID)return SendClientMessage(playerid,0xFF0000FF,"This PlayerId is invalid!");

        GetPlayerName(pID,pname,24);
        new query1[256],escapename[24];
        mysql_real_escape_string(newname, escapename);
        format(query1, sizeof(query1), "SELECT `name` FROM `Users` WHERE `name` = '%s' LIMIT 1", escapename);
        mysql_query(query1);
        mysql_store_result();
        new rows = mysql_num_rows();
        if(!rows)
        {
            new query[256];
            format(query, sizeof(query), "UPDATE `Users` SET `name`= '%s' WHERE `name` ='%s'",escapename,pname);
            mysql_query(query);
            SetPlayerName(pID,escapename);
            new levelsetter[MAX_PLAYER_NAME],adminstring[128];
            GetPlayerName(playerid,levelsetter,sizeof(levelsetter));
            format(adminstring,sizeof(adminstring),"Admin * %s * has changed your name to %s!",levelsetter, newname);
            SendClientMessage(pID,0xFF0000FF, adminstring);
            SendClientMessage(playerid, 0xFF0000FF, "You have changed the name successfully.");
        }
        else if(rows == 1)
        {
            SendClientMessage(playerid, 0xFF0000FF, "This name already exists!");
        }
        mysql_free_result();
    }
    else return SendClientMessage(playerid, 0xFF0000FF, "You don't have permission to use this command!");
    return 1;
}
I guess this should do it.
(Fixed your indention as well^^)

Jeffry


Re: mysql /changename cmd bug? - BlackWolf120 - 04.09.2011

thx alot guys, imma try this out soon.

+Reps for everyone

kind regards, wolf.