setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Start the transaction if( $db->beginTransaction() ) { // Loop 20 times for($i=1 ; $i<=20 ; $i++ ) { // Header echo "--[ Insert run: {$i} ]----------------------------------------". PHP_EOL; // Create a new db class instance (multiple can exist) $newDb = new DB(); // Check that there is a new db class instance, but no new PDO instance var_dump( $newDb, $newDb->getPDO() ); // Insert some data $sql = sprintf(" INSERT INTO `testdata` (`id` ,`field1` ,`field2` ,`field3` ,`field4`) VALUES ('%s', '%s', '%s', '%s', '%s')", $i, $i, $i, $i, $i ); $newDb->exec( $sql ); // Check for inserted data var_dump( $newDb->query( sprintf( "SELECT * FROM `testdata` WHERE id = %d", $i ) ) ); } // Now rollback using the last db class instance var_dump( $newDb->rollback() ); } } catch(PDOException $e) { var_dump( $e ); }