[Ajuda] Problema com consulta MySQL
#1

E aн galera, beleza?
Gente, й o seguinte. Eu uso o MySQL (o tнtulo jб fala KKKKKKK), versгo R7, no meu server, e estou com problemas para fazer uma consulta dos dados do Player assim que ele entra, e atribuir а variбveis. Estou usando assim:

pawn Код:
public MySQL_DadosPlayer(playerid)
{
    new Str[128];
    format(Str,128,"SELECT * FROM contas WHERE nick='%s'",NomePlayer);
    mysql_function_query(Conexao, Str, true, "r@MySQL_DadosPlayer", "d", playerid);
    return 1;
}

public r@MySQL_DadosPlayer(playerid)
{
    new rows,fields;
    cache_get_data(rows,fields,Conexao);
    if(rows)
    {
        new temp[30];
        cache_get_field_content(0,"dinheiro",temp,Conexao);
        PlayerInfo[playerid][pDinheiro] = 2000;//strval(temp);
        GivePlayerMoney(playerid, strval(temp));
        cache_get_field_content(0,"sexo",temp,Conexao);
        PlayerInfo[playerid][pSexo] = strval(temp);
        cache_get_field_content(0,"skin",temp,Conexao);
        PlayerInfo[playerid][pSkin] = strval(temp);
        cache_get_field_content(0,"celular",temp,Conexao);
        PlayerInfo[playerid][pCelular] = strval(temp);
        cache_get_field_content(0,"level",temp,Conexao);
        PlayerInfo[playerid][pLevel] = strval(temp);
        cache_get_field_content(0,"horas_jogadas",temp,Conexao);
        PlayerInfo[playerid][pHorasJogadas] = strval(temp);
        cache_get_field_content(0,"admin",temp,Conexao);
        PlayerInfo[playerid][pAdmin] = strval(temp);
        cache_get_field_content(0,"spawn",temp,Conexao);
        PlayerInfo[playerid][pSpawn] = strval(temp);
        cache_get_field_content(0,"dinheiro",temp,Conexao);
        PlayerInfo[playerid][pDinheiro] = strval(temp);
        GivePlayerMoney(playerid, strval(temp));
    }

    return 1;
}
Uso o strval pois todos esses dados sгo do tipo inteiro. Jб usei de outras formas, mas nгo deu tambйm. O que estou fazendo errado? O que faзo?

Desde jб, muito obrigado! Abraзos!


@edit

pawn Код:
new temp[30];
Abaixo do trecho citado acima coloquei um SendClientMessage(playerid, COLOR_YELLOW,"TESTE");, e ele mostrou na tela, o que significa que hб resultados.
Reply
#2

Posta o log do SQL.

@edit: Alias qual й o problema й com obter os valores para as variaves?
Reply
#3

Schocc, ele nгo atribui o valor pego no BD аs variбveis, entende?
Reply
#4

Quote:
Originally Posted by Mutuka_XTreme
Посмотреть сообщение
Schocc, ele nгo atribui o valor pego no BD аs variбveis, entende?
Checou o Log do SQL?? ve se encontra algo de errado
Reply
#5

Schocc, desculpe-me, mas nгo sei olhar muito bem no log. Entгo esta aн, desde o momento em que liguei o server. Esse select que citado anteriormente й feito logo apуs o login/spawn.

pawn Код:
[00:32:51] >> mysql_connect(localhost, root, xtreme, ******) on port 3306
[00:32:51] CMySQLHandler::CMySQLHandler() - constructor called.
[00:32:51] CMySQLHandler::CMySQLHandler() - Connecting to "localhost" | DB: "xtreme" | Username: "root"
[00:32:51] CMySQLHandler::Connect() - Connection was successful.
[00:32:51] CMySQLHandler::Connect() - Auto-Reconnect has been enabled.
[00:32:51] >> mysql_ping( Connection handle: 1 )
[00:32:51] CMySQLHandler::Ping() - Connection is still alive.
[00:33:32] >> mysql_query_callback( Connection handle: 1 )
[00:33:32] Passing query SELECT nick FROM contas WHERE nick='Mutuka_XTreme' LIMIT 1 | d
[00:33:32] ProcessQueryThread(r@MySQL_ChecarConta) - Query was successful. (SELECT nick FROM contas WHERE nick='Mutuka_XTreme' LIMIT

1)
[00:33:32] ProcessQueryThread(r@MySQL_ChecarConta) - Data caching enabled.
[00:33:32] CMySQLHandler::StoreResult() - Result was stored.
[00:33:32] CMySQLHandler::FreeResult() - Result was successfully free'd.
[00:33:32] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[00:33:32] r@MySQL_ChecarConta(d) - Threaded function called.
[00:33:32] >> cache_get_data( Connection handle: 1 )
[00:33:32] ProcessTick() - The cache has been cleared.
[00:33:37] >> mysql_query_callback( Connection handle: 1 )
[00:33:37] Passing query SELECT * FROM contas WHERE nick='
Mutuka_XTreme' AND senha=SHA1('senha') | d
[00:33:37] ProcessQueryThread(r@MySQL_ChecarSenha) - Query was successful. (SELECT * FROM contas WHERE nick='
Mutuka_XTreme' AND

senha=SHA1('
senha'))
[00:33:37] ProcessQueryThread(r@MySQL_ChecarSenha) - Data caching enabled.
[00:33:37] CMySQLHandler::StoreResult() - Result was stored.
[00:33:37] CMySQLHandler::FreeResult() - Result was successfully free'
d.
[00:33:37] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[00:33:37] r@MySQL_ChecarSenha(d) - Threaded function called.
[00:33:37] >> cache_get_data( Connection handle: 1 )
[00:33:37] >> mysql_query_callback( Connection handle: 1 )
[00:33:37] ProcessTick() - The cache has been cleared.
[00:33:37] Passing query SELECT * FROM contas WHERE nick='Mutuka_XTreme' | d
[00:33:37] ProcessQueryThread(r@MySQL_DadosPlayer) - Query was successful. (SELECT * FROM contas WHERE nick='Mutuka_XTreme')
[00:33:37] ProcessQueryThread(r@MySQL_DadosPlayer) - Data caching enabled.
[00:33:37] CMySQLHandler::StoreResult() - Result was stored.
[00:33:37] CMySQLHandler::FreeResult() - Result was successfully free'd.
[00:33:37] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[00:33:37] r@MySQL_DadosPlayer(d) - Threaded function called.
[00:33:37] >> cache_get_data( Connection handle: 1 )
[00:33:37] ProcessTick() - The cache has been cleared.
Reply
#6

Da uma olhada neste tutorial vai te ajudar a tirar as duvidas, use o mesmo metodo que esta no tutorial, й melhor na minha opniгo;
Reply
#7

Й uma versгo antiga do mysql ;/ Fala da R6-2. Eu uso a R7
Reply
#8

Aumente o valor de celulas da string para 1000:
pawn Код:
new temp[30];
Faзa um debug com os valores das variбveis, Use printf.
Coloque um else na callback SQL_DadosPlayer, ficando:

pawn Код:
PlayerInfo[playerid][pSpawn] = strval(temp);
        cache_get_field_content(0,"dinheiro",temp,Conexao);
        PlayerInfo[playerid][pDinheiro] = strval(temp);
        GivePlayerMoney(playerid, strval(temp));
    }
    else return SendClientMessage(playerid,-1,#Houve um erro ao carregar a DB);

    return 1;
}
edit: Esta usando a callback OnQueryError?
pawn Код:
public OnQueryError(errorid, error[], resultid, extraid, callback[], query[], connectionHandle)
{
        printf(#ErrorID:%i,errorid);
    switch(errorid)
    {
        case CR_COMMAND_OUT_OF_SYNC:
        {
            printf("Commands out of sync for thread ID: %d",resultid);
        }
        case ER_SYNTAX_ERROR:
        {
            printf("Something is wrong in your syntax, query: %s",query);
        }
    }
    return 1;
}
Reply
#9

Cara, nгo retornou o "Houve um erro ao carregar a DB", e nгo adiantou a temp[1000] ;/
Reply
#10

Cara eu te ajudando e vc me faz isso:

--REP Problema com consulta... 15/04/2013 05:08 PM your ass is is is is is is xP fuck


@edit:2
Assim encontramos a educaзгo nas pessoas aqui no fуrum, e lуgico que eu nгo vou ajudar + vocк.

Se vc da reputaзгo negativa para os que querem te ajudar. Agora quem vai te ajudar?.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)