我需要从一个表中取出一个平衡变量,并将其插入到同一个表中,以获得不同的值,我不确定是否正确,因为SOL要求我检查要使用的语法是否正确。
这是我完整的php脚本
<?php
// Connects to the database
$db = mysql_connect("$Sname","$Uname","$Pname") or die("Could not connect to the Database.");
$select = mysql_select_db("$Dname") or die("Could not select the Database.");
//Converts form values to simple variables
if ($_POST['submitButton']) {
$amount = $_POST['amount'];
$today = date("d/m/Y");
$time = date("h:i A");
$sql = "SELECT * FROM $UUname WHERE full='".$amount."'";
$result = mysql_query($sql) or die(mysql_error());
$num_return = mysql_num_rows($result);
if ($num_return == 1){
// inserts the values into the DB
mysql_query("UPDATE $TATname SET date='".$today."', time='".$time."', amount='".$amount."' WHERE user='{$_SESSION['user']}'");
$user = "{$_SESSION['user']}";
// get credits
$query = mysql_query("SELECT SUM(credit) FROM $UUname WHERE user='".$user."'");
$credit = mysql_result($query, 0);
// get debits
$query = mysql_query("SELECT SUM(debit) FROM $UUname WHERE user='".$user."'");
$debit = mysql_result($query, 0);
$bal = $credit - $debit;
$query = "UPDATE $UUname SET full='".$bal."'";
$update = mysql_query($query) or die(mysql_error());
header("Location: successful.php");
exit;
}
else
{
echo "Insufficient Funds";
}
}
?>
请在最后一行使用什么正确的语法,或者我做这件事的正确方法是什么,因为我想告诉用户,当他们试图转账时,他们没有足够的余额。
2条答案
按热度按时间ttisahbt1#
您必须这样编写查询
ibrsph3r2#
从您的帖子中还不清楚,但我假设您有一个表
$UUname
,其中包含名为credit
、debit
和full
的列(后者包含余额)?在这种情况下,更新余额列的正确方法是:
如果不是这种情况,请提供您的表格布局,以便更加具体。
不知道我是否完全理解你的问题,但从我得到的解决方案可能看起来像这样:
创建用户表:
user_id是主键,每个用户只有一行。您可以根据需要添加更多与用户相关的属性。
创建事务表:
当用户添加信用额度时,您添加一个金额为正的行,当他"购买"某个东西时,您添加一个金额为负的行。"文本"只是事务的描述,如下所示:
用户收到10000的积分:
用户花费5000:
现在,当您将某个用户的所有金额相加时,您将收到该用户的余额:
或者,对于user_id为12345的单个用户:
您可以按如下方式更新用户表中的余额:
现在,当你执行一项交易时,你只需检查余额是否足够应付金额,如果足够,你就继续;如果没有,就停下来。
对于这样一个用例,这应该在简单性和完整性之间提供了一个很好的折衷。你也可以使用一个sql语句(例如,类似于https://stackoverflow.com/a/10095710/1140979)对所有用户余额进行完全更新。希望这能有所帮助。