我需要从表中获得一个平衡变量,并将其插入到相同的表中,以获得不同的值

  • 本文关键字:插入 平衡 一个 变量 php mysql
  • 更新时间 :
  • 英文 :


我需要从表中获得一个平衡变量,并将其插入到相同的表中以不同的值,我不确定是否正确,因为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";
}
}
?>

请在最后一行使用正确的语法,或者我做这件事的正确方法是什么,因为我想告诉用户,当他们试图转账时,他们没有足够的余额

你必须写这样的查询

$query = "UPDATE $UUname SET full='".$bal."'"; 
$update = mysql_query($query) or die(mysql_error());

从你的帖子中不清楚,但我假设你有一个表$UUname,其中包含名为credit, debitfull的列(后者包含余额)?

如果是这种情况,更新balance列的正确方法是:

$query = "UPDATE $UUname SET full = $bal";

如果不是这样,请提供更具体的表格布局。

不确定我是否完全理解你的问题,但从我得到的解决方案可能是这样的:

创建用户表:

user_id | username | balance

user_id是主键,每个用户只有一行。您可以根据需要添加更多与用户相关的属性。

创建事务表:

transaction_id | user_id | pdate | bdate | amount | text

当用户添加信用时,您添加一行正值,当他"购买"某些东西时,您添加一行负数。"text"是对事务的简单描述,如下所示:

用户收到10000积分:

INSERT INTO transaction_table (user_id, pdate, bdate, amount, text) VALUES
('12345', '2014-08-08', '2014-08-08', 10000, "Credit charge");

用户花费5000:

INSERT INTO transaction_table (user_id, pdate, bdate, amount, text) VALUES
('12345', '2014-08-08', '2014-08-08', -5000, "bought some cool item");

现在,当您将用户的所有金额相加时,您将收到用户的余额:

SELECT user_id, SUM(amount) FROM transaction_table GROUP BY user_id;

或者,对于单个用户user_id 12345:

SELECT SUM(amount) FROM transaction_table WHERE user_id='12345';

你可以这样更新用户表中的余额:

UPDATE user_table
   SET balance=$balance
WHERE user_id=12345;

现在,当您执行交易时,您只需检查余额是否足够应付到期金额。如果是,你继续;如果没有,就停止。

对于这样的用例,

应该在简单性和完整性之间提供一个很好的折衷。您还可以使用一条sql语句(例如模拟https://stackoverflow.com/a/10095710/1140979)对所有用户余额进行完整更新。

最新更新