PHP中PDO事务处理操作示例
这篇文章主要介绍了PHP中PDO事务处理操作,结合实例形式分析了php使用pdo的mysql事务处理操作步骤、实现技巧及相关注意事项,需要的朋友可以参考下
本文实例讲述了PHP中PDO事务处理操作。分享给大家供大家参考,具体如下:
概要:
将多条sql操作(增删改)作为一个操作单元,要么都成功,要么都失败。
单条数据不用事务处理
被操作的表必须是innoDB类型的表(支持事务)
MySQL常用的表类型:MyISAM(非事务)增删改速度快、InnodB(事务型)安全性高
更改表的类型为innoDB类型
mysql> alter table stu engine=innodb;
使用:
在PDO预处理的基础上添加,如下格式:
try{ $m->beginTransaction();//开启事务处理 //PDO预处理以及执行语句... $m->commit();//提交事务 }catch(PDOException $e){ $m->rollBack();//事务回滚 //相关错误处理 }
示例:
$m = new PDO($dsn,$user,$pwd); $m->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); try{ $m->beginTransaction();//开启事务处理 $stmt=$m->prepare("insert into stu(name,sex,age,classid)values(?,?,?,?)"); $data=array( array("user1",1,22,"lamp76"), array("user2",1,20,"lamp76"), array("user3",0,22,"lamp76") ); foreach($data as $v){ $stmt->execute($v); echo $m->lastInsertId(); } $m->commit(); echo "提交成功!"; }catch(PDOException $e){ $m->rollBack();//回滚 die("提交失败!"); }
补充:再来一个php使用PDO的mysql事务处理与回滚操作实例分析
概述:
事务(transaction)是由查询和/或更新语句的序列组成。 用 begin、start transaction
开始一个事务,rollback 回滚事务,commit 提交事务。 在开始一个事务后,可以有若干个 SQL 查询或更新语句,每个 SQL
递交执行后,还应该有判断是否正确执行的语句,以确定下一步是否回滚,若都被正确执行则最后提交事务。
事务一旦回滚,数据库则保持开始事务前状态。就好象一个被编辑的文件不存盘退出,自然还是保持文件原来的样子。
所以,事务可被视为原子操作,事务中的 SQL,要么全部执行,要不一句都不执行。
PHP中PDO的MYSQL事务处理步骤:
①.关闭自动提交
②.开启事务处理
③.有异常就自动抛出异常提示再回滚
④.开启自动提交
注意:
mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持.
实例:
<?php try{ //最后是关闭自动提交 $pdo=new pdo("mysql:host=localhost;dbname=mydb","root","root", array(PDO::ATTR_AUTOCOMMIT=>0)); //这个是通过设置属性方法进行关闭自动提交和上面的功能一样 //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); //开启异常处理 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "数据库连接失败:".$e->getMessage(); exit; } /* * 事务处理 * * 张三从李四那里买了一台 2000 元的电脑 * 从张三帐号中扣出 2000元 * 向李四账号中加入 2000元 * 从商品表中减少一台电脑 * MyIsAM InnoDB */ try{ $pdo->beginTransaction();//开启事务处理 $price=500; $sql="update zhanghao set price=price-{$price} where id=1"; $affected_rows=$pdo->exec($sql); if(!$affected_rows) throw new PDOException("张三转出失败");//那个错误抛出异常 $sql="update zhanghao set price=price+{$price} where id=3"; $affected_rows=$pdo->exec($sql); if(!$affected_rows) throw new PDOException("向李四转入失败"); echo "交易成功!"; $pdo->commit();//交易成功就提交 }catch(PDOException $e){ echo $e->getMessage(); $pdo->rollback(); } //自动提交,如果最后不自动提交,转账是不成功的 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1); //设置错误报告模式 ERRMODE_SILENT ERRMODE_WARNING
相关推荐:
Atas ialah kandungan terperinci PHP中PDO事务处理操作示例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
