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

MySQL - z czym to się je.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
30 odpowiedzi w tym temacie

#21 Owner123

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 01.06.2011 20:31

REFRESH!!!
Rozszerzyłem tutorial o drugą metodę!! :)
Zapraszam do lekturki ^.^
  • +
  • -
  • 0

#22 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 02.06.2011 17:24

Się zastanawiam, jak wczytać jakiś ciąg znaków i przechowywać go w jakiejś tablicy? Jak to ma wyglądać przy wczytywaniu? Też warto by o tym napisać, bo przecież baza to nie tylko cyferki przechowuje ;]

Dobra, znalazłem -> SQL_ReadResult - AMXX.pl: Support AMX Mod X dobrze by było dodać to do tuta ;]

Użytkownik sebul edytował ten post 03.06.2011 13:32

  • +
  • -
  • 0

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


#23 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 07.10.2011 10:53

Bardzo istotne
public CheckHandler(FailState, Handle:Query, Errorcode, Error[], Data[], DataSize)


powinno być

public CheckHandler(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)



Czyli pomyliłeś kolejność argumentów, konsola ciągle pluła mi błąd zapytania, aż sprawdziłem w dokumentacji i zauważyłem błąd, popraw jak możesz :)

Swoją drogą mysql jest b. ciekawe i ma spore możliwości. Ciekawi mnie połączenie go z C++ w programie. Jakby jakiś tutek konkretny był to bym napisał coś ciekawego może hehe

Użytkownik grankee edytował ten post 07.10.2011 10:55

  • +
  • -
  • 3

#24 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 07.10.2011 13:12

grankee :D

C++ ma swoje API do obsługi MySQL tak jak np. PHP; jak chcesz je poznać to szukaj tutków na serwisach o C++ właśnie, wymiana danych między klientami a serwerem to język SQL niezależnie czy to program desktopowy czy plugin na serwerze, więc synchronizacja nie byłaby trudna - wystarczy korzystać z tej samej bazy i tabel :)
  • +
  • -
  • 1

#25 shoter09

    Życzliwy

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:38
  • Lokalizacja:Poland
Offline

Napisano 11.11.2011 11:48

może ktoś podać przykład, że plugin wykonuje takie zapytanie do bazy
SELECT * FROM `config` where keyname='test'

i gdy otrzyma odpowiedź od bazy 1 to wtedy wyświetli w chat "test jest", a jak otrzyma odpowiedź 0 to wyświetli "test nie ma"
  • +
  • -
  • 0
Dołączona grafika 178.19.107.42:27104
Dołączona grafika 31.134.62.28:27812


www.CS-POL[i]gon.eu

#26 Kaskader

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:103
  • Lokalizacja:Z PoLsKi
Offline

Napisano 18.03.2012 12:59

Oprócz tego co napisałe grankee powinno być:
Zamiast:
format(qCommand, sizeof qCommand-1, "INSERT INTO nauka VALUES(%s, %i, %i);", szName, iPlayerXP[id], iPlayerLvl[id])

Tak:
format(qCommand, sizeof qCommand-1, "INSERT INTO `nauka` VALUES('%s', %i, %i);", szName, iPlayerXP[id], iPlayerLvl[id])


Oraz zamiana miejscami w funkcji SaveHandler:
Errorcode, Error[]


Przydałoby się też omówić aktualizację danych, ponieważ teraz tylko zapisuje przy piewszym wejściu.
  • +
  • -
  • 1

#27 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.03.2012 16:25

taka ciekawostka
* @param failstate - One of the three TQUERY_ defines.
 * @param query - Handle to the query, do not free it.
 * @param error - An error message, if any.
 * @param errnum - An error code, if any.
 * @param data - Data array you passed in.
 * @param size - Size of the data array you passed in.
 * @param queuetime - Amount of gametime that passed while the query was resolving.
jak widać po DataSize można wstawić jeszcze jeden parametr który zwraca nam ile czasu zajęło wywołanie zapytania
  • +
  • -
  • 1

#28 Kaskader

    Zaawansowany

  • Użytkownik

Reputacja: 3
Nowy

  • Postów:103
  • Lokalizacja:Z PoLsKi
Offline

Napisano 18.03.2012 17:48

Po testach stwierdzam, że można to jeszcze dodatkowo zabezpieczyć.
W obecnej formie będzie sypać błędami, gdy gracz będzie miał w nicku np. '
Aby się przedym zabezpieczyć trzeba zamiast
'%s'

zrobić tak:
^"%s^"

Zarówno przy sprawdzaniu bazy danych jak i przy zapisywaniu nowego gracza.
  • +
  • -
  • 1

#29 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 18.03.2012 18:22

to też da się oszukać
żeby zabezpieczyć się przed SQL Injection lepiej użyć replace_all i podmieniać znaki specjalne
  • +
  • -
  • 1

#30 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 23.04.2012 09:41

native Handle:SQL_MakeDbTuple(const host[], const user[], const pass[], const db[], timeout=0);

A ja jeszcze chciałbym wiedzieć, jak dokładnie działa ostatni parametr, jeśli wpiszemy tam powiedzmy 60. Co się dokładnie stanie po tych 60 sekundach po wywołaniu zapytania?
Czyli np. mając taki kod
SQL_ThreadQuery(sqlUcchwyt, "zapytanie_handle", zapytanie);

to mam rozumieć, że po 60 sekundach wywoła się funkcja "zapytanie_handle", ale z błędem, czy po prostu zapytanie zostanie przerwane i nie będzie to w żaden sposób zaalarmowane?
  • +
  • -
  • 0

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


#31 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 23.04.2012 11:55

if (do_timeout && info->max_timeout)
{
		mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout));
}
//MysqlDriver.cpp amxmodx_source1.8.1

Domyślnie parametr jest 0, jeśli ustawisz go na wartość 5 lub większą wtedy po upłynięciu czasu do otrzymania odpowiedzi zapytania(jeśli nie zwróci), moduł zwróci errorcode timeout z sql do funkcji.
DarkGL (28.03.2015 01:37):
Ortega !!! ^D^

  • +
  • -
  • 1




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

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