problem saving mysql
#1

Hello,

I'm turning my script into SQL.
But I have a problem.

When I finish the tutorial for present my server, I have the Tutorial variable set as 1.
When I disconnect, the variable is set to 1 on phpmyadmin.

But, when i'm reconnect, this is turn to 0 ...
There is the Debug log

Код:
[21:54:05] >> mysql_fetch_field_row( Connection handle: 1 )

[21:54:05] CMySQLHandler::FetchField("Tutorial") -
And the line who take the value:

OnPlayerUpdateSQL:

Код:
MySQLUpdatePlayerInt(query, PlayerInfo[playerid][pSQLID], "Tutorial", PlayerInfo[playerid][pTut]);

public MySQLUpdatePlayerInt(query[], sqlplayerid, sqlvalname[], sqlupdateint) // by Luk0r
{
	MySQLUpdateBuild(query, sqlplayerid);
	new updval[64];
	format(updval, sizeof(updval), "%s=%d", sqlvalname, sqlupdateint);
	strcat(query, updval, MAX_STRING);
	return 1;
}
Код:
	MySQLCheckConnection();
	new tmp2[256];
    new string2[64];
	new playername2[MAX_PLAYER_NAME];
	new playernamesplit[3][MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername2, sizeof(playername2));
	split(playername2, playernamesplit, '_');
	MySQLFetchAcctSingle(PlayerInfo[playerid][pSQLID], "Password", PlayerInfo[playerid][pKey]);
	format(tmp2, sizeof(tmp2), "SELECT * FROM players WHERE id = %d LIMIT 1", PlayerInfo[playerid][pSQLID]);
	mysql_query(tmp2);
	mysql_store_result();
	if(strcmp(PlayerInfo[playerid][pKey],password, true ) == 0 )
	{
         ..
           mysql_get_field("Tutorial",Field); PlayerInfo[playerid][pTut] = strval(Field);
         ..
I don't know why...

Regards
Reply
#2

The error is obviously on getting the data from the database when you login so you need to make several tests check your mysql_log.txt you should get something like this
"Passing query SELECT * FROM `your table` WHERE `userName` = 'the user name' | ii"
Reply
#3

Negative. I don't get this error =(
Reply
#4

its not a error its what you should get in your mysql_log.txt file and that means your program is not reading format(tmp2, sizeof(tmp2), "SELECT * FROM players WHERE id = %d LIMIT 1", PlayerInfo[playerid][pSQLID]);

in what method do you have that and btw %d is for integers you want string so change it to %s
Reply
#5

Now, I'm doing this:
Код:
            new tmp;
	    mysql_query("SELECT PlayerLevel FROM players LIMIT 1");
	    mysql_store_result(); tmp = mysql_fetch_int();
	    PlayerInfo[playerid][pLevel] = tmp; mysql_free_result();
And it's work.
Reply
#6

by parts?
first the level, then the skin, etc, etc?
I recommend you to load every thing with one

new pName[24];
new query[256];
GetPlayerName(playerid, pName, 24);
format(query, sizeof(query), "SELECT * FROM `YOUR-TABLE` WHERE `userName` = '%s'", pName);
mysql_function_query(dbhandle, query, true, "OnQueryFinish", "ii", 1, playerid);
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)