0

クエリを実行するいくつかのメソッドで beginTransaction を使用しています。ただし、クエリが失敗してもクエリを実行します。私の問題がどこにあるのか誰か知っていますか?

基本を示すためだけに、コードを乾かします。

方法:

public function __construct() 
    {
        $this->core = db_core::getInstance();
    }

function handle_item($action, $item_id) 
    {
        switch($action) {
        case 'add':
            $this->core->conn->query("INSERT INTO ....");
            break;

        case 'remove':
            $this->core->conn->query("DELETE FROM ....");
            break;
        }
    }

beginTransaction

try 
    {
    $this->core->conn->beginTransaction();

    $this->handle_item("remove", $item_id);
    $this->handle_item("add", $item_id);

    $this->core->conn->commit();

    catch (PDOException $e) 
    {
    $this->core->conn->rollBack();
    echo $e->getMessage();
    }
4

2 に答える 2

-1

INSERT実行中および本体 DELETE内で呼び出し関数を使用しないでください。関数を呼び出すのではなく、これらの Mysql コマンドがその本体内で暗黙的に表示されることを期待してください。そのため、 と の間にコマンドを暗黙的に配置します。beginTransaction()beginTransaction()INSERTDELETEbeginTransaction()commit()

于 2013-05-11T19:21:38.953 に答える