<?php use newznab\db\Settings; try { // Create the first database class instance (which will initialize the PDO connection) $db = new Settings(); // For debug set the error mode $db->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 Settings(); // Check that there is a new db class instance, but no new PDO instance var_dump($newDb, $newDb->getPDO()); // Insert some data $sql = sprintf("\n INSERT INTO `testdata`\n (`id` ,`field1` ,`field2` ,`field3` ,`field4`)\n VALUES\n ('%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); }