[ krstak84 @ 01.06.2010. 05:51 ] @
Naime, nisam bas siguran da li je problem u rollback funkciji, ali negde definitivno postoji.
Ovako glasi moj kod:

Code:

$m = new mysqli("localhost", "root", "", "baza");
$m->autocommit(false);
echo $m->query("INSERT INTO tbl1 VALUES (7)");
echo $m->rollback();
$m->close();


Kada pokrenem ovaj kod i startujem, mislim da bi logicno bilo da se ne upise nista, medjutim meni se u bazi posle izvrsavanje ovog koda ipak upisalo u tabali tbl1 vrednost 7. Tabela tbl1 sadrzi samo jedno polje "id".

ovo echo sto sam stavio ispred ova dva reda i sluzi mi da vidim da li je vratilo true za obe izvrsene naredbe i na ekranu je ispisalo dve jedinice, sto znaci da su obe naredbe izvrsene kako treba.

kada sam proverio ovaj kod :

Code:

$m = new mysqli("localhost", "root", "", "baza");
$m->autocommit(false);
$result = $m->query("SELECT @@autocommit");
if ($result) {
      $row = $result->fetch_row();
      printf("Autocommit is %s\n", $row[0]);
      $result->free();
}else{
     echo "JOK";
}
$m->close();


na ekranu se pojavilo Autocommit is 0, sto zanci da je autocommit setovano na false. Stvarno mi nije jasno u cemu je problem.
Ima li neko ideju?
Hvala.
[ agvozden @ 01.06.2010. 10:24 ] @
Nisam radio sa mysqli, ali mi se cini da ti nedostaje BEGIN?

EDIT:
ocigledno da nema "begin", izgleda da ti je kod ok, mozda je logicka greska, da si ovu vrednost vec imao u tabeli?




[Ovu poruku je menjao agvozden dana 01.06.2010. u 11:55 GMT+1]
[ vatri @ 01.06.2010. 11:00 ] @
I ja sam testirao kod sebe i isto mi ne radi. Da nije neki bug kod klase?!

Evo u attachmentu moj kod!
[ krstak84 @ 01.06.2010. 11:59 ] @
Citat:
agvozden: Nisam radio sa mysqli, ali mi se cini da ti nedostaje BEGIN?

EDIT:
ocigledno da nema "begin", izgleda da ti je kod ok, mozda je logicka greska, da si ovu vrednost vec imao u tabeli?




[Ovu poruku je menjao agvozden dana 01.06.2010. u 11:55 GMT+1]


Nisam imao, ocistio sam tabelu, pokusao da izvrsim i ono je ponovo upisalo, a trebalo bi na je ne upise.

Citat:
vatri: I ja sam testirao kod sebe i isto mi ne radi. Da nije neki bug kod klase?!

Evo u attachmentu moj kod!


Ako mislis da je greska u klasi mysqli, mislim da nije jer sam je to skoro koristio i isprobavao i radilo je ok, ali sada nece a ne znam zasto.
Ovakve greske kao ova me izludjuju.
[ Nikola Poša @ 01.06.2010. 16:19 ] @
A da nije slučajno storage engine tvoje MySQL tabele npr. MyISAM, budući da isti NE podržava transakcije? Da bi ovaj tvoj kod radio, tvoju tabelu u bazi mora da pokreće neki transaction-aware engine, a najpoznatiji, pa i najbolji je InnoDB.
[ vatri @ 01.06.2010. 16:30 ] @
LOL :)

A fino pise u manualu:

Note: This function doesn't work with non transactional table types (like MyISAM or ISAM).
[ krstak84 @ 01.06.2010. 18:38 ] @
Ljudi hvala vam na pomoci, upravu ste bili za MyISAM. Sad sam promenio u InnoDB i sve radi super.
Hvala jos jednom!