MySQL - Osnovne funckije

Započeo Prcko97, Avgust 09, 2020, 21:54:28 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Pozdrav svim clanovima foruma, naime posto zivimo na balkanu jel kasnimo za strancima u svemu pa i u sampu. Htedoh reci i danas mnogo 'skriptera' koristi yini pored mysqla jer im se cini tezak ili im nije dovljno jasan. Potrudicu se da u ovom tutorialu objasnim sve sto je potrebno da neki vas sistem ili ceo mod prebacite u sql ili uradite iz nova, znam da postoji dosta amaterskih tutova kao kako napraviti reg log i tako slicno sto je totalno NEOBJASNJENO, ili za konektovanje baze sto u ovom tutorialu necu pokazivati jer je objasnjeno i svakom normalnom je to jasno  :)

DA KRENEMO

Osnovne MySQL Funkcije
Osnovne 3 funkcije sa kojima ce te susretati u sql-u jesu:

mysql_format
mysql_tquery
mysql_pquery

Objasnjenje
mysql_format funckija se upotrebljava da bi formatirali upit koji saljete u bazu, primer:
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "upit");[/pawn]

mysql_tquery funckija se upotrebljava da bi upit poslali u bazu, primer:
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "upit"); mysql_tquery(handle, q);[/pawn]

mysql_pquery funckija se upotrebljava da bi upit posali u bazu, ali za razliku od tquery pquery sluzi za velike querye jer je brzi, primer nije potreban objasnjeno je za t query i skoro pa je slicno.

Vrste Upita i njihovo Upotrebljavanje
Naprimer zelite da unesete podatke u vasu tablicu - kolonu koristite INSERT INTO
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "INSERT  INTO `tablica` SET `kolona`= '%d' WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "kolona" ime kolone, var - vredonst varijable koju unosite u kolonu, "id" jedinstveni id kolone

Naprimer zelite da uzmete podatke iz vase tablice - kolonu koristite SELECT * FROM
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "SELECT * FROM `tablica`", "callback"); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "callback" - callback u kome se uzimaju vrednosti iz tablice (objasni cu kada budem objasnjavao cache funkcije.

Naprimer zelite da apdejtujete kolone u tablici koristite UPDATE
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "UPDATE `tablica` SET `kolona`= '%d' WHERE`id`='d' ", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "kolona" - ime kolone "var", - vrednost varijable koju apdejtujete, "id" jedinstveni id kolone.

Naprimer zelite da brisete kolone iz tablice koristite DELETE * FROM
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "DELETE * FROM `tablica` WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice,  "id" - jedinstveni id kolone, brisete igraca,kucu itd - id  iz tablice.

Znaci to su neke osnovne funkcije, imam da dodam jos da "%d" sluzi samo int varijablu za float koristite %f,  za string %s, za ime %e.

CACHE
Sada ide objasnjenje za funkciju SELECT * FROM koju sam rekao da cu objasniti, naime da bi se uzeo bilo koji podatak iz tablice morate u qveriju pozvati callback i u njemu koristite cache funkcije na sledeci nacin:


[pawn]
forward public callback(); //gore sam upisao da ce se callback zvati callback
public callback()
{
     static var1, var2[128], Float:var3;         
     if(cache_num_rows()) //ukoliko kolone postoje
     {
            cache_get_value_name_int(0, "var1", var1); // cache funkcija uzima int "var1" iz table i upisuje ga u "var1" varijablu
            cache_get_value_name(0, "var2", var2, 128); // cache funkcija uzima string "var2" iz table i upisuje ga u "var2" varijablu
            cache_get_value_name_float(0, "var3", var3); // cache funkcija uzima float "var3" iz table i upisuje ga u "var3" varijablu
     }
     return 1;
}
[/pawn]

To bi bilo to za ovaj tutorial svaka primedba savet i dodatak su dobrodosli, pucajte :D

Ne moraš za svaki query i string koristiti 128  ;), ako koristiš normalan IDE kao npr Sublime Text 3, Visual Studio Code, etc. selektuješ reč, bilo koji tekst i vidiš koliko ima karaktera, toliki string staviš

Citat: inquisitiveemmett poslato Avgust 09, 2020, 22:00:02 POSLE PODNE
Ne moraš za svaki query i string koristiti 128  ;), ako koristiš normalan IDE kao npr Sublime Text 3, Visual Studio Code, etc. selektuješ reč, bilo koji tekst i vidiš koliko ima karaktera, toliki string staviš

Ovo je samo primer, sustina je bitna string ne mogao sam staviti i 10000 svako ko ima malo mozga stavlja koliko je potrebno ;)

Citat: Prcko97 poslato Avgust 09, 2020, 22:01:22 POSLE PODNE
Ovo je samo primer, sustina je bitna string ne mogao sam staviti i 10000 svako ko ima malo mozga stavlja koliko je potrebno ;)
Dobro, samo kažem jer sam video da si i u onoj filterskripti koristio za svaki query 128

Totalno pogrešno objašnjeno tquery i pquery

Tquery - Query se obavljaju jedan za drugim, uz to da se mora čekati da se prvi query odradi pa tek onda ide sljedeći.
Pquery - Query se obavljaju paralelno, npr pošalješ 2 upita u bazu i oba se vrše od jednom bez čekanja jedan na drugi.

Zamijeni to neko će se osloniti na tut i sjebati se

"They have computers, and they may have other weapons of mass destruction."

Citat: MEDO poslato Avgust 09, 2020, 22:10:26 POSLE PODNE
Totalno pogrešno objašnjeno tquery i pquery

Tquery - Query se obavljaju jedan za drugim, uz to da se mora čekati da se prvi query odradi pa tek onda ide sljedeći.
Pquery - Query se obavljaju paralelno, npr pošalješ 2 upita u bazu i oba se vrše od jednom bez čekanja jedan na drugi.

Zamijeni to neko će se osloniti na tut i sjebati se

Lapsus verovatno sam ja pogresno naucio ili sam yaboravio jer sam posle 3 godine uzeo da pisem nesto u vezi sampa :D Sad ce biti zamenjeo ty :D

 :)
Poslednja Izmena: Avgust 09, 2020, 22:20:08 POSLE PODNE od Prcko97

Uhhh dosta toga je neobjasnjeno mislim da bi bilo pozeljno da si prvo objasnio kako se pise query pa tek onda upotreba u samp skriptanju


"za string %s, za ime %e." ???
Zar ime nije string ?


[pawn]
cache_get_value_name_int(0, "var1", var1);
[/pawn]
Nisi rekao zasto 0 ovde a veoma je vazno, mislim lepo je to sto si napisao tutorijal da pomognes nekome, mozda ces nekome i pomoci ne kazem, ali daj prvo procitaj neku dokumentaciju nmj ove gluposti da lupas sa pquery i tquery, jer neko ce mozda pogresno nauciti




Citat: __vedran.xyz77 poslato Avgust 09, 2020, 22:57:06 POSLE PODNE
Uhhh dosta toga je neobjasnjeno mislim da bi bilo pozeljno da si prvo objasnio kako se pise query pa tek onda upotreba u samp skriptanju


"za string %s, za ime %e." ???
Zar ime nije string ?


[pawn]
cache_get_value_name_int(0, "var1", var1);
[/pawn]
Nisi rekao zasto 0 ovde a veoma je vazno, mislim lepo je to sto si napisao tutorijal da pomognes nekome, mozda ces nekome i pomoci ne kazem, ali daj prvo procitaj neku dokumentaciju nmj ove gluposti da lupas sa pquery i tquery, jer neko ce mozda pogresno nauciti

ime jeste string ali u sqlu se za ime koristi tag %e
sto se tice te 0 stavio sam je jer nism radio u modu i nemam varijable koje bi mogao tu iskoristiti, uopsteno loop prolazi kroz npr maksimalan broj kuca (for new i itd..) i onda umesto 0 pises i

Citat: Prcko97 poslato Avgust 09, 2020, 23:03:32 POSLE PODNE
ime jeste string ali u sqlu se za ime koristi tag %e
sto se tice te 0 stavio sam je jer nism radio u modu i nemam varijable koje bi mogao tu iskoristiti, uopsteno loop prolazi kroz npr maksimalan broj kuca (for new i itd..) i onda umesto 0 pises i
ime jeste string ali u sqlu se za ime koristi tag %e
wtf?

Lockaj temu, došlo je do toga da ja moram jebeni SQL tutorial otvoriti

Citat: inquisitiveemmett poslato Avgust 09, 2020, 23:07:04 POSLE PODNE
ime jeste string ali u sqlu se za ime koristi tag %e
wtf?
ne vidim sta sam pogresio kada god se trazi igracevo ime ili se upisuje koristi se %e

Citat: Prcko97 poslato Avgust 09, 2020, 23:10:57 POSLE PODNE
ne vidim sta sam pogresio kada god se trazi igracevo ime ili se upisuje koristi se %e
%e se koristi kao zaštita od SQL Injectiona, %e automatski escape-a string i samim tim neko ne može da izmanipuliše upit koji se šalje serveru

Isuse bože, objašnjavaš nešto što ne znaš

%e se uvek koristi kod onoga što sam igrač upisuje, bespotrebno je ako recimo hashuješ password da staviš %e kao većina

Neka hvala , ipak cu ja starinski raditi , sto je sigurno sigurno je i ako moze jedna kisela , hvala ;)

Citat: Prcko97 poslato Avgust 09, 2020, 23:10:57 POSLE PODNE
ne vidim sta sam pogresio kada god se trazi igracevo ime ili se upisuje koristi se %e
Ne budi tako siguran pls  ::)