←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] SQL problem z updatowaniem


Najlepsza odpowiedź sebul 17.04.2013 15:59

Błąd na pewno masz tutaj
`Nick` = `%s'
powinno być
`Nick` = '%s'
Reszty nie sprawdzałem, ale możliwe, że tablica jest za mała do tego polecenia, dlatego zalecałbym unikać spacji tam gdzie się da, czyli chociażby pisać tak
`Nick`='%s'
do tego tam gdzie masz liczbę, pisz tak
`Exp`=%d
wtedy zyskasz sporo miejsca i będziesz mógł wykonywać dłuższe zapytania. Przejdź do postu
Zablokowany

GT Team - zdjęcie GT Team 17.04.2013

Co jest w tym nie tak ?
public ZapiszExp(id)
{
	new commands[512], name[48]
	get_user_name(id, name, 47);
	replace_all(name, 47, "'", "\'");
	formatex(commands, 511, "UPDATE `ExpMod` SET `Nick` = `%s', `Exp` = '%d', `Lvl` = '%d', `Points` = '%d', `Upoints` = '%d', `HP` = '%d', `NHP` = '%d', `INVISIBLE` = '%d', `NINVISIBLE` = '%d', `DMG` = '%d', `NDMG` = '%d', `SPEED` = '%d', `NSPEED` = '%d', `GRAV` = '%d', `NGRAV` = '%d', `MONEY` = '%d', `NMONEY` = '%d', `JUMPS` = '%d', `NJUMPS` = '%d', `LONG` = '%d', `NLONG` = '%d', `SLONG` = '%d', `MONETS` = '%d' WHERE Nick = '%s'", name, doswiadczenie_gracza[id], 
	poziom_gracza[id], punkty_gracza[id],ultra_punkty_gracza[id], zycie_gracza[id], nowe_zycie_gracza[id], niewidzialnosc_gracza[id],
	nowa_niewidzialnosc_gracza[id], obrazenia_gracza[id],nowe_obrazenia_gracza[id], szybkosc_gracza[id], floatround(nowa_szybkosc_gracza[id]), grawitacja_gracza[id], floatround(nowa_grawitacja_gracza[id]),kasa_gracza[id], nowa_kasa_gracza[id], skoki_gracza[id], nowe_skoki_gracza[id], longjump_gracza[id], nowy_longujmp_gracza[id], longjump_s_czas[id], monety_gracza[id], name);
	SQL_ThreadQuery(sql, "ZapiszExpHandle", commands);
Problem w tym, że nie updatuje w ogóle danych. Gdy dałem INSERT INTO zamiast tego update ( i tam pozmienialem kod ) to zamiast ciagle i na tym samym kluczu robić to tworzyło nowy.
Odpowiedz

  • +
  • -
Najlepsza odpowiedź sebul - zdjęcie sebul 17.04.2013

Błąd na pewno masz tutaj
`Nick` = `%s'
powinno być
`Nick` = '%s'
Reszty nie sprawdzałem, ale możliwe, że tablica jest za mała do tego polecenia, dlatego zalecałbym unikać spacji tam gdzie się da, czyli chociażby pisać tak
`Nick`='%s'
do tego tam gdzie masz liczbę, pisz tak
`Exp`=%d
wtedy zyskasz sporo miejsca i będziesz mógł wykonywać dłuższe zapytania.
sebul (17.04.2013 16:07):
Można w sumie nawet pomijać znak ` ale czasami musi on być, jeśli nazwa tabeli, czy kolumny wykorzystuje jakieś słowo kluczowe, typu int, czy double.
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 17.04.2013

Sprawdź tak

public ZapiszDane(id) {
	new szBuffer[1][512];
	formatex(szBuffer[0], charsmax(szBuffer[]), "UPDATE ExpMod SET Exp=i%, Lvl=i%, Points=i%, Upoints=i%, HP=i%, NHP=i%, INVISIBLE=%i, NINVISIBLE=i%, DMG=i%, NDMG=i%, SPEED=i%, NSPEED=i%, GRAV=i%, NGRAV=i%, MONEY=i%, NMONEY=i%, JUMPS=i%, NJUMPS=i%, LONG=i%, NLONG=i%, SLONG=i%, MONETS=i% WHERE Nick=^"%s^",
	doswiadczenie_gracza[id], poziom_gracza[id], punkty_gracza[id],ultra_punkty_gracza[id], zycie_gracza[id], nowe_zycie_gracza[id], niewidzialnosc_gracza[id], nowa_niewidzialnosc_gracza[id],
	obrazenia_gracza[id],nowe_obrazenia_gracza[id], szybkosc_gracza[id], floatround(nowa_szybkosc_gracza[id]), grawitacja_gracza[id], floatround(nowa_grawitacja_gracza[id]),kasa_gracza[id], 
	nowa_kasa_gracza[id], skoki_gracza[id], nowe_skoki_gracza[id], longjump_gracza[id], nowy_longujmp_gracza[id], longjump_s_czas[id], monety_gracza[id], name);
	SQL_ThreadQuery(sql, "ZapiszExpHandle", szBuffer[0]);
}

sebul (17.04.2013 16:05):
"i%" ?? xD
Odpowiedz

GT Team - zdjęcie GT Team 17.04.2013

Ok. Pierw sprwadzę Miśka potem sebula.:P

Właśnie i% trochę dziwne :P
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 17.04.2013

Ok. Pierw sprwadzę Miśka potem sebula. :P

Właśnie i% trochę dziwne :P


nie wiem mi fragi i zabicia zapisuje za pomocą %i i śmiga bez błędnie ;d
sebul (17.04.2013 16:09):
Ale tutaj chodzi o kolejność, Ty tam wszędzie masz i%, a powinno być jak już %i. Zresztą sam zawsze używam %i.
Odpowiedz

GT Team - zdjęcie GT Team 17.04.2013

Nie rozumiem.

Zapisuje Ci i% czy %i ? Jak i% to po co mi podałeś :D ? ( sprawdzam )

edit:

Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

Error: Invalid string (possibly non-terminated string) on line 1984
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Warning: Expression has no effect on line 1985
Error: Expected token: ";", but found ")" on line 1987
Error: Invalid expression, assumed zero on line 1987
Warning: Expression has no effect on line 1987

3 Errors.
Could not locate output file C:\Users\STRIKER\Desktop\expmod.amx (compile failed).

nie bd mówić co gdyż na oko widziałem błędy, ale warto spróbowąć xD teraz sebul
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 17.04.2013

oj tam sebul pisałem to na szybko i nie zwróciłem uwagi na kolejnośc ;P poprawnie powinno być tak:

public ZapiszDane(id) {
	new szBuffer[1][512];
	formatex(szBuffer[0], charsmax(szBuffer[]), "UPDATE ExpMod SET Exp=%i, Lvl=%i, Points=%i, Upoints=%i, HP=%i, NHP=%i, INVISIBLE=%i, NINVISIBLE=%i, DMG=%i, NDMG=%i, SPEED=%i, NSPEED=%i, GRAV=%i, NGRAV=%i, MONEY=%i, NMONEY=%i, JUMPS=%i, NJUMPS=%i, LONG=%i, NLONG=%i, SLONG=%i, MONETS=%i WHERE Nick=^"%s^",
	doswiadczenie_gracza[id], poziom_gracza[id], punkty_gracza[id],ultra_punkty_gracza[id], zycie_gracza[id], nowe_zycie_gracza[id], niewidzialnosc_gracza[id], nowa_niewidzialnosc_gracza[id],
	obrazenia_gracza[id],nowe_obrazenia_gracza[id], szybkosc_gracza[id], floatround(nowa_szybkosc_gracza[id]), grawitacja_gracza[id], floatround(nowa_grawitacja_gracza[id]),kasa_gracza[id], 
	nowa_kasa_gracza[id], skoki_gracza[id], nowe_skoki_gracza[id], longjump_gracza[id], nowy_longujmp_gracza[id], longjump_s_czas[id], monety_gracza[id], name);
	SQL_ThreadQuery(sql, "ZapiszExpHandle", szBuffer[0]);
}
Odpowiedz

GT Team - zdjęcie GT Team 17.04.2013

Lecz zwróć uwage na to
^"%s^",
To jest na końcu. Lecz nie ma cudzysłowia zamykającego ten format. nie wiem czy taki masz zamiar czy co :P
Odpowiedz

  • +
  • -
Misiaczek ;c - zdjęcie Misiaczek ;c 17.04.2013

Lecz zwróć uwage na to

^"%s^",
To jest na końcu. Lecz nie ma cudzysłowia zamykającego ten format. nie wiem czy taki masz zamiar czy co :P

 

powinny być  dwa "" ale jak widać jeden zjadłem :D

public ZapiszDane(id) {
	new szBuffer[1][512];
	formatex(szBuffer[0], charsmax(szBuffer[]), "UPDATE ExpMod SET Exp=%i, Lvl=%i, Points=%i, Upoints=%i, HP=%i, NHP=%i, INVISIBLE=%i, NINVISIBLE=%i, DMG=%i, NDMG=%i, SPEED=%i, NSPEED=%i, GRAV=%i, NGRAV=%i, MONEY=%i, NMONEY=%i, JUMPS=%i, NJUMPS=%i, LONG=%i, NLONG=%i, SLONG=%i, MONETS=%i WHERE Nick=^"%s^"",
	doswiadczenie_gracza[id], poziom_gracza[id], punkty_gracza[id],ultra_punkty_gracza[id], zycie_gracza[id], nowe_zycie_gracza[id], niewidzialnosc_gracza[id], nowa_niewidzialnosc_gracza[id],
	obrazenia_gracza[id],nowe_obrazenia_gracza[id], szybkosc_gracza[id], floatround(nowa_szybkosc_gracza[id]), grawitacja_gracza[id], floatround(nowa_grawitacja_gracza[id]),kasa_gracza[id], 
	nowa_kasa_gracza[id], skoki_gracza[id], nowe_skoki_gracza[id], longjump_gracza[id], nowy_longujmp_gracza[id], longjump_s_czas[id], monety_gracza[id], name);
	SQL_ThreadQuery(sql, "ZapiszExpHandle", szBuffer[0]);
}
Odpowiedz

GT Team - zdjęcie GT Team 17.04.2013

Miśka i sebula pomyśł pomógł. Tzn dawałem niepotrzebnie spację ;P +
Odpowiedz
Zablokowany