<?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);
}