【问题标题】:prevent from credit by mysql transaction通过 mysql 交易防止信用
【发布时间】:2014-08-11 05:23:56
【问题描述】:

我想知道如何防止用户信用 例如,我想检查用户的信用,然后如果信用足够,我从他的信用中减去总价

我搜索并找到 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");

【问题讨论】:

    标签: php mysqli transactions


    【解决方案1】:

    你可以用一条语句来做到这一点:

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

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 2014-08-21
      • 2013-06-14
      • 2014-11-06
      • 1970-01-01
      • 2017-10-02
      • 2012-09-18
      相关资源
      最近更新 更多