[Ajuda] MySQL erro
#1

As funзхes feitas atravйs de MySQL no meu gamemode nгo estгo sendo executadas, no log do MySQL tenho esse erro:

Quote:

[ERROR] "mysql_tquery" - invalid connection handle (id: 0)

Reply
#2

Show code.

Certificar-se de que vocк tambйm se a conexгo com o banco de dados foi feita.
Reply
#3

PHP код:

#include     <a_samp>
#include     <a_mysql>
#define     DIALOG01        1
#define     DIALOG02        2
#define     DIALOG03        3
new mysql;
main(){}
public 
OnGameModeInit()
{
        
mysql_connect("localhost""meusql""servidorgta""123123");
        
// Don't use these lines if it's a filterscript
        
SetGameModeText("Blank Script");
        
// AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        
return 1;
}
public 
OnGameModeExit()
{
        return 
1;
}
public 
OnPlayerRequestClass(playeridclassid)
{
        
// SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
        
return 1;
}
public 
OnPlayerConnect(playerid)
{
        new 
name[MAX_PLAYER_NAME], query[1024];
        
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
        
        
format(querysizeof(query), "SELECT * FROM `contas` WHERE ґusuarioґ = '%s'",name);
        
mysql_function_query(mysqlquerytrue"qloginRequest""d"playerid);
        return 
1;
}
forward qloginRequest(playerid);
public 
qloginRequest(playerid) {
        new 
rowsfields;
        
cache_get_data(rowsfields);
        
        if(
rows 0) {
            
//Usuario existe
            
ShowPlayerDialog(playeridDIALOG01DIALOG_STYLE_PASSWORD"Acesso""Digite sua senha:""Logar""");
        } else {
            
//Usuario nгo existe
            
ShowPlayerDialog(playeridDIALOG02DIALOG_STYLE_PASSWORD"Cadastro""Digite uma senha para cadastrar-se:""Registrar""");
        }
}
public 
OnPlayerDisconnect(playeridreason) {
        return 
1;
}
public 
OnPlayerSpawn(playerid) {
        return 
1;
}
public 
OnPlayerDeath(playeridkilleridreason) {
        return 
1;
}
public 
OnPlayerRequestSpawn(playerid) {
        return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[]) {
        switch(
dialogid) {
            
//Usuбrio existe
            
case DIALOG01: {
                new 
name[MAX_PLAYER_NAME], query[1024];
                
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                
                
format(querysizeof(query), "SELECT FROM `contas` WHERE `usuario` = '%s' `senha` = '%s'"nameinputtext);
                
mysql_function_query(mysqlquerytrue"""");
            }
            
//Usuбrio nгo existe
            
case DIALOG02: {
                if(
strlen(inputtext) < 2) {
                    
ShowPlayerDialog(playeridDIALOG02DIALOG_STYLE_PASSWORD"Cadastro""Digite uma senha para cadastrar-se:\n{ff0000}Informe uma senha vбlida""Registrar""");
                } else {
                    new 
name[MAX_PLAYER_NAME], query[1024];
                    
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                    
                    
format(querysizeof(query), "INSERT INTO `contas` (usuario, senha) VALUES ('%s', '%s')",nameinputtext);
                    
mysql_function_query(mysqlqueryfalse"""");
                    
                    
SetSpawnInfo(playerid001958.331343.1215.36269.1526362815000);
                    
SpawnPlayer(playerid);
                }
            }
        }
        return 
1;

Й um sistema simples de login/registro..

Mas nгo estб nem mostrando as dialogs..
Reply
#4

Precisa da Conexгo, por exemplo:

pawn Код:
mysql_tquery(CONEXГO, ...);
#edit

Faz assim:

pawn Код:
static mysql;

//OnGamemodeInit
mysql = mysql_connect(...);
Reply
#5

Vocк estб usando versгo r33+ , a funзгo mysql_function_query foi "substituida" nova funзгo mysql_tquery. e vocк tambem deve chamar a variavel mysql no indнce de conexгo.
pawn Код:
mysql_tquery(connectionHandle, query[], callback[] = "", format[] = "", {Float,_:...})
pawn Код:
#include     <a_samp>
#include     <a_mysql>

#define     DIALOG01        1
#define     DIALOG02        2
#define     DIALOG03        3

new mysql;

main(){}

public OnGameModeInit()
{
       mysql = mysql_connect("localhost", "meusql", "servidorgta", "123123");

        // Don't use these lines if it's a filterscript
        SetGameModeText("Blank Script");
        // AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        return 1;
}

public OnGameModeExit()
{
        return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
        // SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
        return 1;
}

public OnPlayerConnect(playerid)
{
        new name[MAX_PLAYER_NAME], query[1024];
        GetPlayerName(playerid,name,MAX_PLAYER_NAME);
         
        format(query, sizeof(query), "SELECT * FROM `contas` WHERE ґusuarioґ = '%s'",name);
        mysql_tquery(mysql, query,"qloginRequest", "d", playerid);

        return 1;
}

forward qloginRequest(playerid);
public qloginRequest(playerid) {

        new rows, fields;
        cache_get_data(rows, fields);
         
        if(rows > 0) {
            //Usuario existe
            ShowPlayerDialog(playerid, DIALOG01, DIALOG_STYLE_PASSWORD, "Acesso", "Digite sua senha:", "Logar", "");
        } else {
            //Usuario nгo existe
            ShowPlayerDialog(playerid, DIALOG02, DIALOG_STYLE_PASSWORD, "Cadastro", "Digite uma senha para cadastrar-se:", "Registrar", "");
        }
}


public OnPlayerDisconnect(playerid, reason) {
        return 1;
}

public OnPlayerSpawn(playerid) {
        return 1;
}

public OnPlayerDeath(playerid, killerid, reason) {
        return 1;
}

public OnPlayerRequestSpawn(playerid) {
        return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
        switch(dialogid) {
            //Usuбrio existe
            case DIALOG01: {
                new name[MAX_PLAYER_NAME], query[1024];
                GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                 
                format(query, sizeof(query), "SELECT FROM `contas` WHERE `usuario` = '%s' `senha` = '%s'", name, inputtext);
                mysql_tquery(mysql, query, "", "");
            }
            //Usuбrio nгo existe
            case DIALOG02: {
                if(strlen(inputtext) < 2) {
                    ShowPlayerDialog(playerid, DIALOG02, DIALOG_STYLE_PASSWORD, "Cadastro", "Digite uma senha para cadastrar-se:\n{ff0000}Informe uma senha vбlida", "Registrar", "");
                } else {
                    new name[MAX_PLAYER_NAME], query[1024];
                    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                     
                    format(query, sizeof(query), "INSERT INTO `contas` (usuario, senha) VALUES ('%s', '%s')",name, inputtext);
                    mysql_tquery(mysql, query,"", "");
                     
                    SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0);
                    SpawnPlayer(playerid);
                }
            }
        }
        return 1;
}
Reply
#6

Removeu os erros do log Delpin.
Mas continua nгo aparecendo as Dialogs

EDIT:

Adejair, continua nгo exibindo as dialogs.
pawn Код:
[ERROR] CMySQLQuery::Execute[qloginRequest] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ґusuarioґ = 'lucas_123'' at line 1
Reply
#7

Troca cache_get_data(rows, fields);
Por cache_get_data(rows, fields, mysql);
Reply
#8

Quote:
Originally Posted by CachorroDoDavyJones
Посмотреть сообщение
Troca cache_get_data(rows, fields);
Por cache_get_data(rows, fields, mysql);
Troquei e o erro continuou no mysql_log ...
Reply
#9

Sua sintaxe no Select estava errada quando vб selecionar o nome do player , tente novamente.

pawn Код:
#include     <a_samp>
#include     <a_mysql>

#define     DIALOG01        1
#define     DIALOG02        2
#define     DIALOG03        3

new mysql;

main(){}

public OnGameModeInit()
{
        mysql_log(LOG_ALL);
       mysql = mysql_connect("localhost", "root", "base_testes", "");

        // Don't use these lines if it's a filterscript
        SetGameModeText("Blank Script");
        // AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
        return 1;
}

public OnGameModeExit()
{
        return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
        // SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
        // SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
        return 1;
}

public OnPlayerConnect(playerid)
{
        new name[MAX_PLAYER_NAME], query[1024];
        GetPlayerName(playerid,name,MAX_PLAYER_NAME);
         
        format(query, sizeof(query), "SELECT * FROM `contas` WHERE `usuario` = '%s'",name);
        mysql_tquery(mysql, query,"qloginRequest", "d", playerid);

        return 1;
}

forward qloginRequest(playerid);
public qloginRequest(playerid) {

        new rows, fields;
        cache_get_data(rows, fields);
         
        if(rows > 0) {
            //Usuario existe
            ShowPlayerDialog(playerid, DIALOG01, DIALOG_STYLE_PASSWORD, "Acesso", "Digite sua senha:", "Logar", "");
        } else {
            //Usuario nгo existe
            ShowPlayerDialog(playerid, DIALOG02, DIALOG_STYLE_PASSWORD, "Cadastro", "Digite uma senha para cadastrar-se:", "Registrar", "");
        }
}


public OnPlayerDisconnect(playerid, reason) {
        return 1;
}

public OnPlayerSpawn(playerid) {
        return 1;
}

public OnPlayerDeath(playerid, killerid, reason) {
        return 1;
}

public OnPlayerRequestSpawn(playerid) {
        return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
        switch(dialogid) {
            //Usuбrio existe
            case DIALOG01: {
                new name[MAX_PLAYER_NAME], query[1024];
                GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                 
                format(query, sizeof(query), "SELECT FROM `contas` WHERE `usuario` = '%s' `senha` = '%s'", name, inputtext);
                mysql_tquery(mysql, query, "", "");
            }
            //Usuбrio nгo existe
            case DIALOG02: {
                if(strlen(inputtext) < 2) {
                    ShowPlayerDialog(playerid, DIALOG02, DIALOG_STYLE_PASSWORD, "Cadastro", "Digite uma senha para cadastrar-se:\n{ff0000}Informe uma senha vбlida", "Registrar", "");
                } else {
                    new name[MAX_PLAYER_NAME], query[1024];
                    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                     
                    format(query, sizeof(query), "INSERT INTO `contas` (usuario, senha) VALUES ('%s', '%s')",name, inputtext);
                    mysql_tquery(mysql, query,"", "");
                     
                    SetSpawnInfo(playerid, 0, 0, 1958.33, 1343.12, 15.36, 269.15, 26, 36, 28, 150, 0, 0);
                    SpawnPlayer(playerid);
                }
            }
        }
        return 1;
}

public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
{
    printf("%s %s %s %s",errorid,error,callback,query);
}
Reply
#10

Adejair seus cуdigo nгo funcionou tambйm..

Quote:

[18:41:36] [DEBUG] mysql_connect - host: "localhost", user: "root", database: "base_testes", password: "****", port: 3306, autoreconnect: true, pool_size: 2
[18:41:36] [DEBUG] CMySQLHandle::Create - creating new connection..
[18:41:36] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
[18:41:36] [DEBUG] CMySQLHandle::Create - connection created (id: 1)
[18:41:36] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:41:36] [ERROR] CMySQLConnection::Connect - (error #1049) Unknown database 'base_testes'
[18:41:36] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:41:36] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:41:36] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[18:41:36] [ERROR] CMySQLConnection::Connect - (error #1049) Unknown database 'base_testes'
[18:41:50] [DEBUG] mysql_tquery - connection: 1, query: "SELECT * FROM `contas` WHERE `usuario` = 'lucas_123'", callback: "qloginRequest", format: "d"

Reply


Forum Jump:


Users browsing this thread: