Pogledajte određenu poruku
Staro 24. 09. 2011.   #8
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

Nema razloga da ne koristis mysqli, to je samo drugaciji (noviji) drajver za mysql bazu, koji omogucava neke bitne stvari, recimo prepare statements i da se logujes u bazu sa novim sistemom cuvanja sifri koji je sigurniji. Ali jos bolje je da umesto mysqli odmah preskocis i naucis PDO, to je isto drajver, ali ne samo za mysql, vec podrzava razne baze.

Sto se tice multi-query postoje neke sigurnosne implikacije sa tom f-jom, pa se zato ne preporucuje, a sem toga to nije ono sto tebi treba.

Bitno je da razumes kako se SQL izvrsava: php posalje svom drajveru SQL string koji si zadao, on to prosledi bazi, baza kompajlira SQL string u komandu i onda je izvrsi. Kad imas vise komandi njih moras da izvrsis sekvencijalno, jednu po jednu, i svaka ce proci kroz sve ove korake. Ono sto multiquery pomaze je sto mozes u jednom pozivu bazi da posaljes vise komandi, pa stedis na konekcijama ka bazi, koje su inace najsporiji deo operacije. Ali posle toga se sve odvija isto, tj. i dalje se izvrsava jedna po jedna komanda

Druga stvar koju treba da razumes je pojam atomske operacije u bazi. To je operacija koju mozes da zamislis da se obavlja u jednom koraku, tj. ona ili ne uspe, ili se izvrsi onako kako je zadano, druge operacije koje se izvrsavaju u bazi ne mogu da uticu na njen rezultat. U mysql-u je svaka pojedina komanda atomska, znaci ako kazes UPDATE tabela SET a=5, b=6; ti znas da ce na svakom redu u tabeli a i b biti toliko, ne moze da se promeni samo a ili samo na par redova.

Medjutim kad imas vise komandi onda to ije atomska operacija, znaci bilo kakve izmene u bazi koje neko drugi radi mogu da ti uniste relacije (veze id-jeva koje imas, sto se jednim imenom zove referencijalni integritet baze). Da se to ne bi desilo koriste se transakcije, a posto koristis InnoDB engine ja bih ti preporucio da sve te svoje operacije zatvoris izmedju START TRANSACTION i COMMIT komandi. Vise o tome mozes da procitas ovde:
http://dev.mysql.com/doc/refman/5.0/en/commit.html
__________________
Leadership is the art of getting people to want to do what you know must be done.
ivanhoe je offline   Odgovorite uz citat
2 članova zahvaljuje ivanhoe za poruku: