public static function updateUserPrize($prizeTable, $columnId,
$columnName, $userTable, $openid, $prizeLevel)
{
// 使用事务
// mysql_connect 是面向过程的
$conn =
mysql_connect(self::$server, self::$username, self::$password);
mysql_select_db(self::$database);
mysql_query('set
autocommit=0'); // 不自动提交
mysql_query('BEGIN');
// 开启事务
// 获取奖品数量
$sql = "select $columnName
from $prizeTable where id=$columnId";
$result =
mysql_query($sql);
$row =
mysql_fetch_row($result); //
获取的是顺序数组
$prizeNum = (int)
$row[0];
//
减少奖品数量,因为在别的方法中判断了奖品数量,所以这个方法不需要给返回值
$sql = "update $prizeTable
set $columnName=$columnName-1 where id=$columnId and
$columnName=$prizeNum and $columnName>0";
$res =
mysql_query($sql);
// 更新用户获奖信息
if (mysql_affected_rows()
> 0) { //
update语句一定会执行成功,所以需要判断影响行数
$sql = "update $userTable set prize=$prizeLevel
where openid='$openid'";
$res2 = mysql_query($sql);
}
if ($res2) {
mysql_query("COMMIT");
mysql_query('set autocommit=1');
return true;
} else {
mysql_query("ROLLBACK");
mysql_query('set autocommit=1');
return false;
}
}