我的问题是begintransaction回滚不起作用
用户表
数据库连接类
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()方法不能撤消此操作