new Handle: gTuple;
new g_SQLOK = 0;
/*plugin_init*/
LaczenieSQL();
/*reszta kodu*/
public LaczenieSQL()
{
if(g_SQLOK) return;
formatex(g_sTable, 31, "punkty_table2")
gTuple = SQL_MakeDbTuple("1*5", "s*1", "h*b", "s*ft");
new sCommand[512];
formatex(sCommand, 511, "CREATE TABLE IF NOT EXISTS `%s` ( `nick` VARCHAR( 64 ), `punkty` INT )", g_sTable);
SQL_ThreadQuery(gTuple, "LaczenieSQL_HADNLE", sCommand);
}
public LaczenieSQL_HADNLE(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
g_SQLOK = 1;
if(Errcode)
{
log_to_file("addons/amxmodx/logs/punkty.log","Blad w zapytaniu: %s", Error);
g_SQLOK = 0;
}
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Nie mozna podlaczyc sie do bazy danych.");
g_SQLOK = 0;
return PLUGIN_CONTINUE;
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Zapytanie anulowane.");
g_SQLOK = 0;
return PLUGIN_CONTINUE;
}
log_to_file("addons/amxmodx/logs/punkty.log","Pomyslnie polaczono z baza danych");
return PLUGIN_CONTINUE;
}
public WczytajDane(id)
{
if(g_SQLOK)
{
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "SELECT * FROM `punkty_table2` WHERE `nick` = '%s'", szName)
SQL_ThreadQuery(gTuple, "WczytajDaneHandler", qCommand, Data, 1)
}
else return;
}
public WczytajDaneHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
log_to_file("addons/amxmodx/logs/punkty.log","Blad w zapytaniu: %s", Error);
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Nie mozna podlaczyc sie do bazy danych.");
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Zapytanie anulowane.");
return PLUGIN_CONTINUE
}
if(!SQL_MoreResults(Query)) // Nie znaleziono wpisów w bazie danych. Możemy spokojnie utworzyć.
DodajWpis(id)
else // A jednak coś znalazł ! Żeby nie robić kolejnej funkcji od razu odczytujemy.
{
ammo_packi[id] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "punkty")) // Ponieważ funkcja SQL_ReadResult wymaga ID pola, a my go nie mamy musimy posłużyć się funkcją SQL_FieldNameToNum.
}
return PLUGIN_CONTINUE
}
public DodajWpis(id)
{
if(!(g_SQLOK)) return;
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "INSERT INTO `punkty_table2` VALUES('%s', '%d');", szName, ammo_packi[id])
SQL_ThreadQuery(gTuple, "DodajWpisHandler", qCommand, Data, 1)
}
public DodajWpisHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
{
if(Errorcode)
log_to_file("addons/amxmodx/logs/punkty.log","Blad w zapytaniu: %s", Error);
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Nie mozna podlaczyc sie do bazy danych.");
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Zapytanie anulowane.");
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
public ZapiszDane(id)
{
if(!(g_SQLOK)) return;
new Data[1]
Data[0] = id
new qCommand[512], szName[32]
get_user_name(id, szName, charsmax(szName))
format(qCommand, sizeof qCommand-1, "UPDATE `punkty_table2` SET `punkty` = '%d' WHERE `nick` = '%s';", ammo_packi[id], szName)
SQL_ThreadQuery(gTuple, "ZapiszDaneHandler", qCommand, Data, 1)
}
public ZapiszDaneHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)
{
if(Errorcode)
log_to_file("addons/amxmodx/logs/punkty.log","Blad w zapytaniu: %s", Error);
if(FailState == TQUERY_CONNECT_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Nie mozna podlaczyc sie do bazy danych.");
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED)
{
log_to_file("addons/amxmodx/logs/punkty.log","Zapytanie anulowane.");
return PLUGIN_CONTINUE
}
return PLUGIN_CONTINUE
}
Wiem że nie ma zabezpieczenia przez ` i ' w nicku, ale to nie o to chodzi bo testowałem na local host (baza nie na local host'cie)
ZapiszDane(id) przy wyjściu z serwera i WczytajDane(id) przy wejściu jbc.
To jest pierwsza moja styczność z tworzeniem zapisu sql w pawn, proszę o wyjaśnienie błędów
ewentualnie podaje zawartość moich logów