![]() |
#1 |
član
Certified
Datum učlanjenja: 21.05.2010
Lokacija: Nis
Poruke: 54
Hvala: 24
450 "Hvala" u 10 poruka
![]() ![]() ![]() ![]() ![]() |
![]() Zdravo,
Imam jednu nedoumicu.. Radi se o CodeIgniter-u Kada pisem , recimo INSERT ili DELETE, preko funkcije affected_rows() mogu da ispitam da li je > 0, i na taj nacin da budem sigurniji da je nesto uneo ili obrisao u bazi. Ali kako da budem siguran za UPDATE...? Jer ako kliknem na azuriraj (dugme u mojoj app) a nisam nista menjao affected_rows = 0, sto ne znaci da je greska, ako izmeni bice 1. Ja pisem ovako Kôd:
function nesto () { // INSERT, UPDATE ILI DELETE $this->db->operacija() // neka od gore sa where ili bez $error = $this->db->_error_message(); // CI mysql_error if(!empty($error)) { // vrati gresku, los sql } return; } Ne koristim affected_rows, jer racunam ako je dobar sql da nema bas neke potrebe za proverom da li je azurirao neki red u bazi.. 1) Da li je ovakav princip dovoljan, ili treba dodati i affected_rows() ?? 2) Sta u slucaju UPDATE i gornjeg primera, kada vraca 0, nismo menjali nista? Kako biti siguran da ce raditi kako treba. Da li treba neka dodatna provera kada radimo update? Tnx |
![]() |
![]() |
![]() |
#3 |
član
Certified
Datum učlanjenja: 21.05.2010
Lokacija: Nis
Poruke: 54
Hvala: 24
450 "Hvala" u 10 poruka
![]() ![]() ![]() ![]() ![]() |
![]() 1) SQL moze da se desi lako da nije dobar... Zamisli da radis na projektu godinu dana... A u 8 mesecu dodje do izmene naziva kolone, ili nesto trece. I ako ti promakne nesto, a ne zelis da izbaci gresku i celu putanju do fajla, vec zelis da kontrolises koju gresku vraca i sta zelis da ispises, za mene je ovo dobar nacin (naravno ne ocekujem ja da se na 5 min desavaju neke greske).
Nekad se desava da zuris kod druga na kartanje, pa te mrzelo da proveris sve a prebacis na live,( a ovo se svakome desava), moras da budes siguran da se nedesi nesto budjavo. Vise volim da kontrolisem neprijatne situacije 2) Trigeri... Desilo se da su 3 tabele povezane, i ako tabelu koja je u vezi sa prvom, pokusas da izmenis, izmena nece biti usvojena i vraca se affected rows 0 - To nije greska, ali korisnika moze da zbuni, zar ne?? Pa smo kolega i ja dosli do resenja da je affected rows vrlo bitan, i da je mozda resenje da se stavi jos jedno polje u bazi, koje bi pri update uvek upisalo nesto, tipa unix timestamp.. Tako da affected rows uvek je 1, iako ne menjamo nista u bazi (a rade trigeri) ali smo sigurni da je update prosao?? A mozemo ako triger sprecava update da vidimo da je affected rows 0, i ispisemo upozorenje : Ovo ne moze na ovaj nacin da se menja i slicno... Koliko je ovo komplikovano ne znam, heh Poslednja izmena od spezia : 18. 02. 2013. u 15:48. |
![]() |
![]() |
![]() |
Alati teme | |
Način prikaza | |
|
|