Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6984083
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T18:30:15+00:00 2026-05-27T18:30:15+00:00

I’ve got a PHP script that deletes old data from a database, reads data

  • 0

I’ve got a PHP script that deletes old data from a database, reads data from another, then inserts the new data in the first. For obvious reasons, I wanted to this using transactions, with a rollback on every possible error. This seems to work, except for one bit of unexpected and – to me – unexplicable behaviour.

When (purposefully) interrupting the script, all of my DELETE statements are succesfully rolled back except one that seems to have been executed anyway.

The code has an array of ‘tasks’, each an array with, among other details, a table name, a human-readable description of the kind of data, and the specific SELECT statement for the source database. Here’s a fragment of that ‘worklist’ array:

$worklist = array(
        array(
            "table" => "campaign",
            "description" => "campaign details",
            "selectsql" => "SELECT ... "
        ),
        array(
            "table" => "product",
            "description" => "product",
        "selectsql" => "SELECT ... "
    ),
    ...
        array(
            "table" => "context_search",
        "description" => "product details for search",
        "selectsql" => "SELECT ... "
    )
);

After defining this ‘worklist’, I start my transaction as follows:

$dbfront = new PDO(...);
$dbfront->exec("SET AUTOCOMMIT = 0");
$dbfront->beginTransaction();
$dbfront->exec("SET FOREIGN_KEY_CHECKS=0");

After which I loop through the worklist to delete old data as follows:

        foreach($worklist as $job){
            $deleter = $dbfront->prepare("DELETE FROM "
                                    . $job["table"] .
                                " WHERE
                                    campaign_id = " . $campaign_id .
                                ";");
            try{
                $deleter->execute();
                echo $deleter->rowCount() . "lines of old data deleted from " . $job["table"] . " table\n"; 
            } catch (exception $e){
                echo $e . "\n";
                $dbfront->rollBack();
                echo "An error occurred. All changes have been rolled back.\n";
                exit;
            }
        }

Then, there’s the code to select new data from the other database and to insert it into ‘dbfront’, and then at the end, I have this part to commit the changes:

try {
    $dbfront->commit();
    echo "\nAll changes committed\n";
} catch (Exception $e) {
    echo $e . "\n";
    $dbfront->rollBack();
    echo "An error occurred. All changes have been rolled back.\n";
    exit;
}

Does anyone have any idea what might be a plausible explanation for the first two tables to be rolled back perfectly when I interrupt this script halfway, and the third one to be executed no matter what?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T18:30:16+00:00Added an answer on May 27, 2026 at 6:30 pm

    Not all storage engines in MySQL support transactions. If transaction operates on MyISAM table, the changes in that table will be commited regardless if the rest of transaction is commited or rollbacked.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I've got a string that has curly quotes in it. I'd like to replace
I have a string like this: La Torre Eiffel paragonata all’Everest What PHP function
I'm parsing an RSS feed that has an ’ in it. SimpleXML turns this
I'm trying to create an if statement in PHP that prevents a single post
I want to count how many characters a certain string has in PHP, but
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I would like to count the length of a string with PHP. The string
For some reason, after submitting a string like this Jack’s Spindle from a text
this is what i have right now Drawing an RSS feed into the php,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.