Szerző Téma: MySQL Gondok[2]  (Megtekintve 483 alkalommal)

MySQL Gondok[2]
« Dátum: 2011. December 18. - 22:39:33 »
0 Show voters
Sziasztok!Nem rég egy mysql-es admin rendszert kezdtem el megcsinálni(fél-1órája) és mikor lefuttatnák egy lekérdezést ezt írja ki:
[22:38:50] INSERT INTO `szerver`.`admins` (`ip`,`name`,`level`) VALUES (\'asd\',\'asd\',0);
[22:38:50] [MySQL] Error (0): Failed to exeute query. Commands out of sync; you can\'t run this command now.
A kód:[pawn]#include <a_samp>
#include <mysql>
#include <zcmd>
#include <sscanf2>
new MySQL:mysql;
public OnFilterScriptInit()
{
mysql=mysql_init(LOG_ALL);
mysql_connect(\"127.0.0.1\",\"root\",\"asdasd\",\"szerver\",mysql);
    printf(\"Sikeresen elindult az adminsystem!\");
for(new i;i<GetMaxPlayers();i++)
{
    if(IsPlayerConnected(i))
    {
        OnPlayerConnect(i);
    }
}
return 1;
}
public OnFilterScriptExit()
{
mysql_close(mysql);
return 1;
}
public OnPlayerConnect(playerid)
{
new ip[16];
GetPlayerIp(playerid,ip,16);
new str[128];
format(str,128,\"SELECT * FROM `admins` WHERE `ip`=\'%s\'\",ip);
mysql_query(str);
mysql_store_result();
mysql_free_result();
if(mysql_num_rows(mysql)==0)
{
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,\"Regisztrálás\",\"Írd be a jelszavad a regisztráláshoz.\",\"OK\",\"Mégsem\");
} else {
    SendClientMessage(playerid,-1,\"Üdv újra!\");
}
return 1;
}
forward OnDialogResponse2(playerid, dialogid, response, listitem, inputtext[]);
public OnDialogResponse2(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==1)
{
    new ip[16];
    GetPlayerIp(playerid,ip,16);
    new name[24];
    GetPlayerName(playerid,name,24);
    new str[128];
    format(str,128,\"INSERT INTO `szerver`.`admins` (`ip`,`name`,`level`) VALUES (\'%s\',\'%s\',0);\",ip,name);
    printf(\"%s\",str);
    new query=mysql_query(str);
    if(query)
    {
        SendClientMessage(playerid,-1,\"Sikeres regisztráció!\");
        return 1;
    } else {
        SendClientMessage(playerid,-1,\"Sikertelen regisztráció!\");
    }
}
return 0;
}
[/pawn]
StrickenKid mysql pluginját haználom.Köszönöm elõre is a segítséget.
Nincsenek benne ilyen izék:&#039;%s\'\"
UI: Az OnDialogResponse2 azért van ott, mivel nem hívta meg alapból a szerver, ezért bekellett építenem ezt a callbackot a scriptbe,hogy megtudja hívni a gamemode.Ha az alap OnDialogResponse-t hívtam volna meg vagy 999x lefutott volna.
« Utoljára szerkesztve: 2011. December 18. - 22:42:09 írta lackos888 »

Nem elérhető kurta999

  • 2759
  • Éllő fédisznó
    • Profil megtekintése
MySQL Gondok[2]
« Válasz #1 Dátum: 2011. December 18. - 22:43:39 »
+1 Show voters
Ez a hiba elég sok mindenen múlhat.
Jelen esetben annyit vettem észre, hogy a free_result()-ot a num_rows() elõtt használtad, azt utánna kell mindig.
[pawn]
public OnPlayerConnect(playerid)
{
new ip[16];
GetPlayerIp(playerid,ip,16);
new str[128];
format(str,128,\"SELECT * FROM `admins` WHERE `ip`=\'%s\'\",ip);
mysql_query(str);
mysql_store_result();
if(mysql_num_rows(mysql)==0)
{
    ShowPlayerDialog(playerid,1,DIALOG_STYLE_PASSWORD,\"Regisztrálás\",\"Írd be a jelszavad a regisztráláshoz.\",\"OK\",\"Mégsem\");
} else {
    SendClientMessage(playerid,-1,\"Üdv újra!\");
}
mysql_free_result();
return 1;
}
[/pawn]

MySQL Gondok[2]
« Válasz #2 Dátum: 2011. December 18. - 22:48:09 »
0 Show voters
Még így sem jó,de azért köszi hogy szóltál.
EDIT: Úr isten, csak újra kellett indítani a szerverem és jó lett.Köszi a segítséget!
« Utoljára szerkesztve: 2011. December 18. - 22:52:48 írta lackos888 »

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal