通过mysql事务防止信用

时间:2014-08-11 05:23:57

标签: php mysqli transactions

我想知道如何防止用户信用 例如,我想检查用户的信用,然后如果信用额度足够我减去信用卡的总价格

我搜索并找到stackoverflow question,但问题不是很明确 我知道mysql事务,原子命令,互斥,

但是我找不到关于php + mysql事务的简单问题 所有样本大约有3个或4个查询,如果发生异常则进行滚动后退 而不是在事务部分中使用php检查语句

那就是我的代码  这是对的吗?

$total_price = $count * $price;

mysqli_query("start transaction")

$credit = mysqli_query('select credit from users where uname="test"');
mysqli_query('update `credit`=`credit`-'.$total_price.' where uname="test"');


if($credit > $total_price)
 mysqli_query("commit")
else
 mysqli_query("rollback");

1 个答案:

答案 0 :(得分:0)

您可以使用一个声明来完成:

$result = mysqli_query("UPDATE users SET credit = credit - $total_price WHERE uname='test' AND credit >= $total_price");
$hadCredit = mysqli_affected_rows() > 0;