Witam. Szukam zabezpieczenia przed dublowaniem sie wpisow w bazie danych. Wiem ze trzeba bylo nadac unikalny klucz pewnej kolumnie w bazie (ja chce to zrobic na nick) oraz dodac do pluginu przy tworzeniu wpisu pewna fraze. Moglby mi to ktos przyblizyc?
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.
|

Zabezpieczenie przed dublowanie sie wpisów w bazie danych
#3
Napisano 13.08.2014 14:32
Zrobilbym tak:
ALTER TABLE `nazwa_tabeli` ADD PRIMARY KEY (`nazwa_kolumny`)
A na serwerze podczas dodawania wpisu w bazie zamienie to:
formatex(q_command, 511, "INSERT INTO `%s` (`nick`,`klasa`,`lvl`,`exp`) VALUES ('%s',%i,1,0)", g_sqlTable, name, class);
na:
formatex(q_command, 511, "INSERT INTO `%s` (`nick`,`klasa`,`lvl`,`exp`) VALUES ('%s',%i,1,0) ON DUPLICATE KEY UPDATE `exp` = `exp`+VALUES(`exp`)", g_sqlTable, name, class);
Bedzie trybic?
#4
Napisano 13.08.2014 23:16
NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
#5
Napisano 16.08.2014 15:08
Czyli zbierając to wszystko w całość:
- z tym unikalnym kluczem jako nick jest ok
- jeżeli nowy gracz wbija na serwer nie tworzyć mu nowego wpisu od razu tylko wtedy gdy doświadczenie będzie zapisywane do bazy danych i używać tam komendy:
formatex(q_command, 511, "INSERT INTO `%s` (`nick`,`klasa`,`lvl`,`exp`) VALUES ('%s',%i,%i,%i) ON DUPLICATE KEY `exp` = `exp`+VALUES(`exp`)", g_sqlTable, name, class, PlayerLevel[id], PlayerXp[id]);
Jak zwrócić w tym zapytaniu ilość expa która jest już z bazie? Chcę zrobić tak, że do jednej zmiennej będę zapisywał exp jaki gracz zdobył na jednej mapie a następnie przy zmianie mapy czy wyjściu z serwera pobierał ilość expa w bazie danych, dodawał ilość expa zdobytego i zapisywał do bazy. Potrzebuję tego ponieważ czasami nie wiem czemu resetuje graczom poziom.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych