01.09.2015, 13:52
A recent issue popped up, and I guarantee I've spent a good amount of time trying to solve this myself but I can't seem to figure it out.
In the LoginPlayer function, ID returns as 4 (which is what my database says as well) and is supposed to be saved in the Player[playerid][ID] enumerator. The problem is that "WHERE ID" in the SavePlayer function should be returning '4' but it's returning '0' so it's not updating the correct area of the database. What am I doing wrong?
Here is the code used to log players in:
And the MySQL debug responses for that area:
And here is where the problem is:
And the corresponding MySQL debug response:
In the LoginPlayer function, ID returns as 4 (which is what my database says as well) and is supposed to be saved in the Player[playerid][ID] enumerator. The problem is that "WHERE ID" in the SavePlayer function should be returning '4' but it's returning '0' so it's not updating the correct area of the database. What am I doing wrong?
Here is the code used to log players in:
PHP код:
stock LoginPlayer(playerid)
{
new query[126];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(query, sizeof(query), "SELECT * FROM user_accounts WHERE Username = '%s'", pName);
mysql_query(query);
mysql_store_result();
while(mysql_fetch_row_format(query, "|"))
{
mysql_fetch_field_row(Player[playerid][Username], "Username");
mysql_fetch_field_row(Player[playerid][Password], "Password");
mysql_fetch_field_row(query, "PlayerPos"); sscanf(query, "fff", Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2]);
mysql_fetch_field_row(query, "AdminLevel"); Player[playerid][AdminLevel] = strval(query);
mysql_fetch_field_row(query, "Skin"); Player[playerid][Skin] = strval(query);
mysql_fetch_field_row(query, "LoggedIn"); Player[playerid][LoggedIn] = strval(query);
mysql_fetch_field_row(query, "Money"); Player[playerid][Money] = strval(query);
mysql_fetch_field_row(query, "ID"); Player[playerid][ID] = strval(query);
}
GivePlayerMoney(playerid, Player[playerid][Money]);
}
Код:
[09:44:10] >> mysql_query( Connection handle: 1 ) [09:44:10] CMySQLHandler::Query(SELECT * FROM bans WHERE (Username = 'Shadow' OR IPAddress = '') AND Status = 1) - Successfully executed. [09:44:10] >> mysql_store_result( Connection handle: 1 ) [09:44:10] CMySQLHandler::StoreResult() - Result was stored. [09:44:10] >> mysql_num_rows( Connection handle: 1 ) [09:44:11] CMySQLHandler::NumRows() - Returned 0 row(s) [09:44:11] >> mysql_free_result( Connection handle: 1 ) [09:44:11] CMySQLHandler::FreeResult() - Result was successfully free'd. [09:44:11] >> mysql_query( Connection handle: 1 ) [09:44:11] CMySQLHandler::Query(SELECT * FROM user_accounts WHERE Username = 'Shadow') - Successfully executed. [09:44:11] >> mysql_store_result( Connection handle: 1 ) [09:44:11] CMySQLHandler::StoreResult() - Result was stored. [09:44:11] >> mysql_num_rows( Connection handle: 1 ) [09:44:11] CMySQLHandler::NumRows() - Returned 0 row(s) [09:44:13] >> mysql_query( Connection handle: 1 ) [09:44:13] CMySQLHandler::Query(INSERT INTO user_accounts (Username, Password, PlayerPos, Skin) VALUES ('Shadow', '310BB28AC7B16438667836D8EDB887544B49BFC6212BC1A8217F284DBD43D5F2B9ACEF89E6530C9A47B84372EB139044D5AC1D6C33D0227CDF1ADF046CFD7F3D', '1.0 2.0 3.0', '0')) - Successfully executed. [09:44:13] >> mysql_query( Connection handle: 1 ) [09:44:13] CMySQLHandler::Query(SELECT * FROM user_accounts WHERE Username = 'Shadow') - Successfully executed. [09:44:13] >> mysql_store_result( Connection handle: 1 ) [09:44:13] CMySQLHandler::StoreResult() - Result was stored. [09:44:13] >> mysql_fetch_row_format( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchRow() - Return: Shadow|310BB28AC7B16438667836D8EDB887544B49BFC6212BC1A8217F284DBD43D5F2B9ACEF89E6530C9A47B84372EB139044D5AC1D6C33D0227CDF1ADF046CFD7F3D|1.0 2.0 3.0|0|0|0|0|4 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("Username") - Shadow [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("Password") - 310BB28AC7B16438667836D8EDB887544B49BFC6212BC1A8217F284DBD43D5F2B9ACEF89E6530C9A47B84372EB139044D5AC1D6C33D0227CDF1ADF046CFD7F3D [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("PlayerPos") - 1.0 2.0 3.0 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("AdminLevel") - 0 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("Skin") - 0 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("LoggedIn") - 0 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("Money") - 0 [09:44:13] >> mysql_fetch_field_row( Connection handle: 1 ) [09:44:13] CMySQLHandler::FetchField("ID") - 4 [09:44:13] >> mysql_fetch_row_format( Connection handle: 1 )
PHP код:
stock SavePlayer(playerid)
{
new query[1024];
new EncryptedPass[130];
WP_Hash(EncryptedPass, sizeof(EncryptedPass), Player[playerid][Password]);
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
Player[playerid][Money] = GetPlayerMoney(playerid);
Player[playerid][Skin] = GetPlayerSkin(playerid);
if( !IsPlayerConnected(playerid) )
{
Player[playerid][LoggedIn] = 0;
} else {
Player[playerid][LoggedIn] = 1;
}
GetPlayerPos(playerid, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2]);
format(query, sizeof(query), "UPDATE user_accounts SET Username = '%s', Password = '%s', PlayerPos = '%f %f %f', AdminLevel = '%d', Skin = '%d', LoggedIn = '%d', Money = '%d' WHERE ID = '%d'", pName, EncryptedPass, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2], Player[playerid][AdminLevel], Player[playerid][Skin], Player[playerid][LoggedIn], Player[playerid][Money], Player[playerid][ID]);
mysql_query(query);
printf("Player ID %d (%s) has been updated", playerid, pName);
}
Код:
[09:45:11] >> mysql_query( Connection handle: 1 ) [09:45:11] CMySQLHandler::Query(UPDATE user_accounts SET Username = 'Shadow', Password = '19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A73E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3', PlayerPos = '2075.546386 2036.309204 10.820312', AdminLevel = '0', Skin = '2', LoggedIn = '1', Money = '0' WHERE ID = '0') - Successfully executed.