<? require ("tracker.php");
?>
<center>
<?php
include 'dbc.php';
?>
<title>J~Net Level Up</title>
<?php session_start();
$id = $_SESSION['user_id'];
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("messages") or die(mysql_error());
$data = mysql_query("UPDATE `users` SET `balance` = `balance` - 1000 WHERE `users`.`id` =$id")
or die(mysql_error());
echo "<table border cellpadding=3>";
while($info = mysql_fetch_array( $data ))
{
echo "<tr>";
echo "<th>User:</th> <td>".$info['user_name'] . "</td> ";
echo "<th>Balance:</th> <td>".$info['balance'] . " </td></tr>";
}
echo "</table>";
// echo "Balance Is ".$_SESSION['balance'];
echo $row['user_name'] . " " . $row['balance'];
?>
<META HTTP-EQUIV=REFRESH CONTENT="0; URL=010101levup.php">
正如你在上面的代码中看到的那样,在执行之前它没有检查余额是否可用而且余额是否为负,是否有一种简单的方法可以使if语句在执行sql语句之前确保余额可用?
请帮助解决这个小故障我需要的是一个专家来编辑上面的代码而不是告诉我需要像以前那样添加什么行,当它发生它未经测试时,当我测试它失败所以我需要它来确保平衡就在那里,如果是,则进入刷新行(在代码块的底部),
如果没有足够的资金,它应该返回错误而不是转到最后一行代码。
请帮助,如果可以,我可以提供您可能需要的任何SQL,以便在需要时测试您的结果!
答案 0 :(得分:1)
在where子句中添加一些额外的逻辑:
$update = 1000;
UPDATE users
SET balance = balance - $update
WHERE (users.id = $id) AND
(balance >= $update)
更新仍然会运行,但只有在天平足够高时才会实际更改记录。