Skip to content

Example

Maruwan Adisendja edited this page Apr 4, 2018 · 3 revisions

##1. Using DBCommand transaction feature

$DBQueryObj = new DBQuery($host, $username, $password, $database_name);

$inputObj1 = new MagicInput();

$inputObj1->setInputsDefinition([
    ['first_name', 's', true, ''],
    ['last_name', 's', true, ''],
    ['email', 'e', true, ''],
    ['gender', 's', false, ''],
    ['id', 'i', true, ''],
]);

/* Set in-line/default value */
$inputObj1->first_name = "Cazzie";
$inputObj1->last_name = "Lingwood";
$inputObj1->email = "clingwood1@cpanel.net";
$inputObj1->id = 1;

$inputObj2 = new MagicInput();

$inputObj2->setInputsDefinition([
    ['first_name', 's', true, ''],
    ['last_name', 's', true, ''],
    ['email', 'e', true, ''],
    ['gender', 's', false, ''],
    ['id', 'i', true, ''],
]);

/* Set in-line/default value */
$inputObj2->first_name = "Blair";
$inputObj2->last_name = "Erridge";
$inputObj2->email = "berridge0@ezinearticles.com";
$inputObj2->id = 2;

if ($inputObj1->isInputsComplied()) {
    if ($inputObj2->isInputsComplied()) {
        $DBCmd = new DBCommand($DBQueryObj);

        $DBCmd->enableTransaction();

        /* Set and execute 1st query */
        $DBCmd->setUPDATEtoTable('friend');
        $DBCmd->importInputColumns($inputObj1, ['id']);
        $DBCmd->addConditionStatement('id', $inputObj1->id, IFieldType::INTEGER_TYPE);

        $DBCmd->executeQueryCommand();

        /* Set and execute 2nd query */
        $DBCmd->setUPDATEtoTable('friend');
        $DBCmd->importInputColumns($inputObj2, ['id']);
        $DBCmd->addConditionStatement('id', $inputObj2->id, IFieldType::INTEGER_TYPE);

        $DBCmd->executeQueryCommand();

        $tstatus = $DBCmd->commitTransaction();

        $DBCmd->disableTransaction();

        /*
         * $tstatus return real true on success commit 
         * $tstatus return array of error object on failed commit
         * Note: true===true (real true)
         */
        if ($tstatus === true) {
            echo 'Transaction successful';
        } else {
            echo '<pre>';
            var_dump($tstatus);
        }
    } else {
        echo json_encode($inputObj2->getNonCompliedInputList());
    }
} else {
    echo json_encode($inputObj->getNonCompliedInputList());
}