php+Mysqli利用事务处理转账问题的方法
php+Mysqli利用事务处理转账问题的方法
本文实例讲述了php+Mysqli利用事务处理转账问题的方法。分享给大家供大家参考
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
header("Content-type:text/html; charset=utf-8");
$mysqli = new mysqli("localhost", "root", "064319", "php"); $mysqli->set_charset("utf8");
if($mysqli->connect_errno) { die('数据库连接失败'.$mysqli->connect_error); }
$mysqli->autocommit(false); //自动提交模式设为false $flag = true; //事务是否成功执行的标志
$query = "update account set balance=balance-1000 where id=3"; $result = $mysqli->query($query); $affected_count = $mysqli->affected_rows; if(!result || $affected_count == 0) { //失败 $flag = false; }
$query = "update account set balance=balance+1000 where id=2"; $result = $mysqli->query($query); $affected_count = $mysqli->affected_rows; if(!$result || $affected_count == 0) { $flag = false; }
if($flag) { $mysqli->commit(); echo '转账成功'; } else { $mysqli->rollback(); echo '转账失败'; }
$mysqli->autocommit(true); //重新设置事务为自动提交 $mysqli->close(); ?> |
代码二:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
try{ $pdo=new PDO("mysql:host=localhost;dbname=psp","root",""); $pdo->exec("set names utf8"); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置异常处理模式 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交 }catch(PDOException $e){ echo "数据库连接失败"; exit; }
try{ $age=10; $pdo->beginTransaction();//开始事务 $affected_rows1=$pdo->exec("update kfry set k_age=k_age+{$age} where k_name='user1'"); $affected_rows2=$pdo->exec("update kfry set k_age=k_age-{$age} where k_name='user2'");//随意更改使之执行成功或失败 /* if($affected_rows1&&$affected_rows2) { $pdo->commit(); echo "操作成功"; }else{ $pdo->rollback(); } */ if(!$affected_rows1) throw new PDOException("加入错误"); if(!$affected_rows2) throw new PDOException("减少错误"); echo "操作成功"; $pdo->commit();//如果执行到此处前面两个更新sql语句执行成功,整个事务执行成功 }catch(PDOException $e){ echo "操作失败:".$e->getMessage(); $pdo->rollback();//执行事务中的语句出了问题,整个事务全部撤销 } $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1); //测试是否成功 echo "\n操作结果为:\n"; $sql="select * from kfry"; $result=$pdo->query($sql); foreach($result as $v) { echo $v['k_name']." ".$v['k_age']."\n"; } ?> |
以上所述就是本文的全部内容了,希望大家能够喜欢。

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

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan