Pdo Begin事务回滚失败

时间:2019-02-13 17:14:23

标签: php mysql pdo transactions

我的问题是begintransaction回滚不起作用
用户表

  • id int(11)AI
  • 余额加倍(10)
  • 密码varchar(100)
  • eposta varchar(60)
  • lastlogin text()Json

    Siparisler表

  • 简单的int(11)AI
  • packid int(11)
  • userid int(11)
  • 数量加倍(10)
  • limit int(6)
  • sipcode varchar(15)



数据库连接类

class baglan
{
    public $vt;
    function db()
    {
        if($this->vt)
        {
            return $this->vt;
        }
        else{
            try
            {
                $this->vt=new PDO("mysql:host=localhost;dbname=twitterapp;charset=utf8","root","");

            }
            catch(PDOEXception $i)
            {
                die("veritaibanı Bağlantısı yapılamadı Hata Detayı : ".$i->getMessage());
            }
            return $this->vt;
        }
    }
}



付款方式

function payment()
{
    $this->db()->beginTransaction();
    try{
        $sipekle=$this->db()->prepare("insert into siparisler set packid=:pack,userid=:alici,limit=:siplimit,amount=:price,sipcode=:code");
        $sipekle->execute(array("pack"=>1,"alici"=>1,"siplimit"=>100,"price"=>10,"code"=>"12ASX43AZ12QP"));
        $bakiye=$this->db()->prepare("update user set balance=balance-:cost where id=:uid");
        $bakiye->execute(array("cost"=>1,"uid"=>1));
        $this->db()->commit();
        return(array("durum"=>"İşlem başarılı"));
    }
    catch(PDOEXCeption $i)
    {
        $this->db()->rollback();

        return(array("hata"=>"İşlem sırasında hata oluştu.Lütfen tekrar deneyin.Sürekli olarak bu hatayı alıyorsanız destek talebi açın:<br>Hata Kodu: ERR-SIP-0_".time()));            
    }       
}

结果

Array
(
    [hata] => İşlem sırasında hata oluştu.Lütfen tekrar deneyin.Sürekli olarak bu hatayı alıyorsanız destek talebi açın:
Hata Kodu: ERR-SIP-0_1550070987
)

siparisler表添加了数据
用户余额未更新
Rollback();不起作用
 用户余额更新失败,Siparisler表添加订单成功。 Begintransaction Rollback()方法不能撤消此操作

0 个答案:

没有答案