-1

私は OOP が苦手で、スクリプトが必要です。私は最善を尽くしましたが、うまくいきません。誰かが私のために OOP スクリプトを作成できますか (これは小さなスクリプトです)。

関数が必要で、関数startTransaction()内に 2 つのクエリを入れます。また、この関数内に変数を作成し($transaction_called=1)、次に関数が呼び出されたときに、この変数にアクセスできるようにする必要があります。

2 番目の関数が必要ですstopTransaction()。この関数内にもクエリがあり、内部で作成された変数にアクセスする必要がありますstartTransaction()

毎回、ランダム スクリプトで を呼び出し、startTransaction()変数 $transaction_called を使用して、関数が呼び出されたかどうかを確認します。

これは私が持っているものですが、修正方法がわかりません。

class Foo
{
    protected $_transaction_called = '0';

    public function transactionCalled()
    {
        // code ...
        $this->_transaction_called = '1';
    }

    public function startTransaction()
    {
        if(!$this->_transaction_called === '1') {
            $this->transactionCalled();
            mysql_query("START TRANSACTION", $db);
        }else{
            //do nothing, transaction already started
        } 
    }

    public function transactionStopped()
    {
        // code ...
        $this->_transaction_called = '0';
    }

    public function stopTransaction()
    {
        if(!$this->_transaction_called === '1') {
            $this->transactionStopped();
            if($transaction_error==true){
                mysql_query("ROLLBACK", $db);
            }else{
                mysql_query("COMMIT", $db);
            }
        }
    }
}

//some random script:
$transaction_error=false;
startTransaction();

$query_1 = "UPDATE x1 SET X1='1' WHERE X1='x'";
$result_1 = mysql_query($query_1, $db);
if(!$result_1){$transaction_error=true;}
//query's, query's and more query's

stopTransaction();
4

2 に答える 2