Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z zapisem SQL - Wytłumaczenie błędów.


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 K!113r

    Teraz to chyba Sławek kek

  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 27.08.2012 22:05

Witam, nie mam nic do roboty więc chciałem przerobić pewien zapis nvault na sql no i mam błędy, pierwsze zapytanie (jeżeli nie ma tabeli to utwórz xD) wykonuje się doskonale, lecz z następnymi jest problem

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
Spoiler

  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#2 K!113r

    Teraz to chyba Sławek kek

  • Autor tematu
  • Power User

Reputacja: 387
Wszechpomocny

  • Postów:868
  • GG:
  • Steam:steam
  • Imię:Mateusz
  • Lokalizacja:Piotrków Tryb.
Offline

Napisano 28.08.2012 00:06

do zamknięcia, poradziłem sobie.
  • +
  • -
  • 0

DarkGL to mój autorytet.

skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować skomplikować


#3 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 28.08.2012 04:07

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych