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

[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


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

#1 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 17.04.2013 15:39

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.

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 17.04.2013 15:59   Najlepsza odpowiedź

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.

  • +
  • -
  • 1

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


#3 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 17.04.2013 16:02

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

  • +
  • -
  • 0

#4 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 17.04.2013 16:06

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

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

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#5 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 17.04.2013 16:08

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.

  • +
  • -
  • 1

#6 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 17.04.2013 16:09

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

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#7 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 17.04.2013 16:11

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]);
}

  • +
  • -
  • 1

#8 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 17.04.2013 16:16

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

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#9 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 17.04.2013 16:18

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]);
}

  • +
  • -
  • 1

#10 GT Team

    Ten lepszy xD

  • Autor tematu
  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 17.04.2013 16:20

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

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





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

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