Advertisement
Help Keep Boards Alive. Support us by going ad free today. See here: https://subscriptions.boards.ie/.
If we do not hit our goal we will be forced to close the site.

Current status: https://keepboardsalive.com/

Annual subs are best for most impact. If you are still undecided on going Ad Free - you can also donate using the Paypal Donate option. All contribution helps. Thank you.
https://www.boards.ie/group/1878-subscribers-forum

Private Group for paid up members of Boards.ie. Join the club.

PHP/MySQLi & Transactions

  • 30-09-2013 12:53PM
    #1
    Registered Users, Registered Users 2 Posts: 1,991 ✭✭✭


    I have been playing around with running transactions with MySQLi and PHP, below is the basic format I've gotten to so far. Is there a better more standardised way to format transactions in PHP and is there a need to use $vConn->autocommit(TRUE) or does commit() set autocommit back to TRUE once it's run?

    Thanks in advance for the help/advice.
    <?php
    $vTransactionCompleted = false;
    
    // Custom class to open DB connection
    $vConn = $dbObj->open();
    
    $vConn->autocommit(FALSE);
    
    try {
    	$vConn->query("INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
    	$vConn->query("INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");
    
    	if ($vConn->commit())
    		$vTransactionCompleted = true;
    }
    catch(Exception $e)
    {
    	$vConn->rollback();
    }
    
    $vConn->autocommit(TRUE);
    
    // Custom class to close DB connection
    $dbObj->close($vConn);
    
    if ($vTransactionCompleted)
    	echo "Transaction was successful.";
    else
    	echo "Transaction failed.";
    ?>
    

    Edit: Found out one answer about setting autocommit back to TRUE, http://www.php.net/manual/en/mysqli.commit.php#89976


Advertisement