[Ajuda] Problema com MySQL
#1

Estou com um problema, que nгo sei como resolver...
Quando registro dentro do servidor, й chamada a seguinte linha:

PHP код:
Dialog:RegisterScreen(playeridresponselistiteminputtext[])
{
    if (
response)
    {
        if(
strlen(inputtext) < 6) {
            
SendClientMessageEx(playeridCOLOR_LIGHTRED"Vocк digitou uma senha invбlida (mнnimo 7 caracteres).");
            
Dialog_Show(playeridRegisterScreenDIALOG_STYLE_PASSWORD"Californa Roleplay | Registro""Olб, %s.\nSeja bem vindo ao Califуrnia Roleplay!\n\nInformaзгo: Sua conta ainda nгo estб registrada em nosso servidor!\n\n{FF6347}Digite uma senha abaixo para registrar-se:""Registrar""Sair"ReturnName(playerid0));
        } else {
            new
                
query[2580];
            
WP_Hash(PlayerData[playerid][pPassword], 129inputtext);
            
mysql_format(MySQLquerysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`) VALUES ('%e', '%e')"ReturnName(playerid1), PlayerData[playerid][pPassword]);
            
mysql_tquery(MySQLquery"OnAccountRegister""i"playerid);
        }
    } else {
        
Kick(playerid);
    }
    return 
1;

Atй aн tudo bem.
As outras variбveis, sгo nulas, ou seja, sу sгo alteradas atravйs do UPDATE, para que na linha INSERT nгo fiquem muitas linhas.

No caso, fica assim:


Atй aн, sem problema algum; registrei no servidor, e estб tudo normal, o registro no banco de dados foi criado.
Sу que apуs um tempo, nгo sei por que, as linhas na qual define a `Origin`, `Birthdate` e `NomeOOC`, ficam vazias



Daн pensei comigo...
As linhas da origem, data de nascimento e o nome ooc sгo strings
A senha tambйm й uma string
Entгo por quк o mesmo nгo acontece com a senha?
Decidi procurar na gamemode a linha na qual insere a senha no banco de dados

PHP код:
mysql_format(MySQLquerysizeof(query), "INSERT INTO `accounts` (`Username`, `Password`) VALUES ('%e', '%e')"ReturnName(playerid1), PlayerData[playerid][pPassword], ReturnIP(playerid)); 
Percebi que a string estava com Escape, no caso, %e, ao invйs de string direta, como %s.

Entгo, pensando que resolveria o caso, defini todas as strings do UPDATE na qual eram string diretas, para strings com escape, entгo, ficou:

PHP код:
UpdatePlayerData(playerid)
{
    new
        
query[3000];
    if (
GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
    {
        
GetPlayerPos(playeridPlayerData[playerid][pPos][0], PlayerData[playerid][pPos][1], PlayerData[playerid][pPos][2]);
        
GetPlayerFacingAngle(playeridPlayerData[playerid][pPos][3]);
        
        
GetPlayerHealth(playeridPlayerData[playerid][pHealth]);
        
GetPlayerArmour(playeridPlayerData[playerid][pArmor]);
        
PlayerData[playerid][pMoney] = GetMoney(playerid);
    }
    
format(querysizeof query"UPDATE `accounts` SET `Password` = '%e', `IP` = '%e', `Gender` = '%d', `Origin` = '%e', `Birthdate` = '%e'",
        
PlayerData[playerid][pPassword],
        
PlayerData[playerid][pIP],
        
PlayerData[playerid][pGender],
        
PlayerData[playerid][pOrigin],
        
PlayerData[playerid][pBirthdate]
    );
    
    
format(querysizeof query"%s, `Skin` = '%d', `Registred` = '%d', `PosX` = '%f', `PosY` = '%f', `PosZ` = '%f', `PosA` = '%f', `Admin` = '%d', `NomeOOC` = '%e', `Money` = '%d', `PlayingHours` = '%d', `PlayingMinutes` = '%d', `Interior` = '%d', `World` = '%d'",
        
query,
        
PlayerData[playerid][pSkin],
        
PlayerData[playerid][pRegistred],
        
PlayerData[playerid][pPos][0],
        
PlayerData[playerid][pPos][1],
        
PlayerData[playerid][pPos][2],
        
PlayerData[playerid][pPos][3],
        
PlayerData[playerid][pAdmin],
        
PlayerData[playerid][pOOCName],
        
PlayerData[playerid][pMoney],
        
PlayerData[playerid][pPlayingHours],
        
PlayerData[playerid][pPlayingMinutes],
        
PlayerData[playerid][pInterior],
        
PlayerData[playerid][pWorld]
    );
    
    for (new 
013++) {
        
format(querysizeof(query), "%s, `Gun%d` = '%d', `Ammo%d` = '%d'"query1PlayerData[playerid][pGuns][i], 1PlayerData[playerid][pAmmo][i]);
    }
    
    
format(querysizeof query"%s, `Health` = '%f', `Armor` = '%f', `Injured` = '%d', `Hunger` = '%d', `Thirst` = '%d', `JailTime` = '%d', `Prisoned` = '%d', `Entrance` = '%d', `Banned` = '%d', `BannedBy` = '%e', `BannedReason` = '%e' WHERE `ID` = '%d' LIMIT 1",
        
query,
        
PlayerData[playerid][pHealth],
        
PlayerData[playerid][pArmor],
        
PlayerData[playerid][pInjured],
        
PlayerData[playerid][pHunger],
        
PlayerData[playerid][pThirst],
        
PlayerData[playerid][pJailTime],
        
PlayerData[playerid][pPrisoned],
        
PlayerData[playerid][pEntrance],
        
PlayerData[playerid][pBanned],
        
PlayerData[playerid][pBannedBy],
        
PlayerData[playerid][pBannedReason],
        
PlayerData[playerid][pID]
    );
    
mysql_tquery(MySQLquery);
    return 
1;

Ou seja, todas as strings tornaram-se strings escapadas.

Tentei registrar no servidor, e quando me conectei, dizia que minha senha estava errada...
Pensei ser um bug na database, e quando fui ver, os registros estavam assim:



Como resolver isso
Estou tentando jб tem 2 dias...
Reply


Messages In This Thread
Problema com MySQL - by MineiriinHo - 03.03.2019, 22:33
Re: Problema com MySQL - by zHellSync - 03.03.2019, 23:37
Re: Problema com MySQL - by MineiriinHo - 03.03.2019, 23:48
Re: Problema com MySQL - by MineiriinHo - 04.03.2019, 01:52
Re: Problema com MySQL - by zHellSync - 04.03.2019, 10:39
Re: Problema com MySQL - by GuiKommander - 04.03.2019, 11:54
Re: Problema com MySQL - by MineiriinHo - 04.03.2019, 16:07
Re: Problema com MySQL - by Felipealves - 04.03.2019, 18:28
Re: Problema com MySQL - by MineiriinHo - 04.03.2019, 20:53
Re: Problema com MySQL - by MineiriinHo - 05.03.2019, 02:11

Forum Jump:


Users browsing this thread: 2 Guest(s)