I had that suspicion that I was only calling it for the last query. Thank you for confirming and for the code! Much appreciated. Stuart --- Graham Cossey <graham@xxxxxxxxxxxxxxx> wrote: > Stuart, you are calling your rollback function only > if $result is false. > > This check you are performing at the end of > performing your 3 queries, each > of which update $result. The net result here is that > you will only call > rollback() if the 3rd query results in false. > > I would create another function called maybe > run_query() which is something > like: > > function run_query($sql) > { > $result = mysql_query($query); > if(!$result) > { > return false; > }else{ > return true; > } > } > > then: > > begin(); > $query = "INSERT INTO firsttable.....//first query > $res1 = run_query($query); > $query = "INSERT INTO secondtable...//second query > $res2 = run_query($query); > $query = "INSERT INTO thirdtable....//third query > $res3 = run_query($query); > > if($res1 && $res2 && $res3) // If all results are > true > { > commit(); > echo "your insertions were successful"; > }else{ > echo mysql_errno($link)." : > ".mysql_error($link)."\n"; > rollback(); > exit; > } > > Graham > > > > -----Original Message----- > > From: Stuart Felenstein > [mailto:stuart4m@xxxxxxxxx] > > Sent: 16 October 2004 13:53 > > To: php-db@xxxxxxxxxxxxx > > Subject: Transactions - working but > unsure about steps > > > > > > My statements are all working but I'm not sure if > > things are set up correctly. I say this because > at > > one point the first $query failed, yet the rest of > > inserts wre committed. Now I believe I need to > set > > autocommit to 0 , yet the query failed due to a > syntax > > error. Hence 0 records effected wouldn't be the > case > > here. > > Here is what I have: > > > > //Create these functions - > > function begin() > > { > > mysql_query("BEGIN"); > > } > > function commit() > > { > > mysql_query("COMMIT"); > > } > > function rollback() > > { > > mysql_query("ROLLBACK"); > > } > > > > connection statement with error > checking........... > > > > begin(); // transaction begins > > $query = "INSERT INTO firsttable.....//first query > > $result = mysql_query($query); // process first > query > > $query = "INSERT INTO secondtable...//second query > > $result = mysql_query($query); // process second > query > > $query = "INSERT INTO thirdtable....//third query > > $result = mysql_query($query); // process third > query > > > > then: > > > > if(!$result) > > { > > echo mysql_errno($link) . ": " . > mysql_error($link). > > "\n"; > > rollback(); // transaction rolls back > > > > exit; > > } > > else > > { > > commit(); // transaction is committed > > echo "your insertion was successful"; > > > > -- > > PHP Database Mailing List (http://www.php.net/) > > To unsubscribe, visit: > http://www.php.net/unsub.php > > > > > > -- > PHP Database Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php