Why won't the following PDO transaction won't work in PHP?
- by jfizz
I am using PHP version 5.4.4, and a MySQL database using InnoDB. I had been using PDO for awhile without utilizing transactions, and everything was working flawlessly. Then, I decided to try to implement transactions, and I keep getting Internal Server Error 500. The following code worked for me (doesn't contain transactions).
try {
     $DB = new PDO('mysql:host=localhost;dbname=database', 'root', 'root');
     $DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $dbh = $DB->prepare("SELECT * FROM user WHERE username = :test");
     $dbh->bindValue(':test', $test, PDO::PARAM_STR);
     $dbh->execute();
    }
catch(Exception $e){
        $dbh->rollback();
        echo "an error has occured";
    }
Then I attempted to utilize transactions with the following code (which doesn't work).
try {
    $DB = new PDO('mysql:host=localhost;dbname=database', 'root', 'root');
    $DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh = $DB->beginTransaction();
    $dbh->prepare("SELECT * FROM user WHERE username = :test");
    $dbh->bindValue(':test', $test, PDO::PARAM_STR);
    $dbh->execute();
    $dbh->commit();
    }
catch(Exception $e){
        $dbh->rollback();
        echo "an error has occured";
    }
When I run the previous code, I get an Internal Server Error 500. 
Any help would be greatly appreciated! Thanks!