【问题标题】:I need to get a balance variable out from a table and insert it back to the same table to different value我需要从表中取出一个余额变量并将其插入同一个表中以不同的值
【发布时间】:2014-08-08 09:58:36
【问题描述】:

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

请在最后一行使用什么正确的语法,或者我这样做的正确方法是什么,因为我想告诉用户他们在尝试进行转账时余额不足。

【问题讨论】:

  • 你想UPDATE 一个字段,而不是INSERT 一个新字段,对吧?
  • 是的,还有 $amount 包含的内容,因为您在 $bal 中获取余额金额,然后 $amount 属于什么。
  • 是的,我需要获取余额并将其插入一个已满的空值中,然后使用它来处理另一笔转账,以验证用户想要转账多少以及在说不足之前会有多少余额,所以我所做的是 $bal = $credit - $debit 行,然后得到 $bal 的余额并将其插入全值,我不知道这样做是否正确,但如果你有一个好的告诉用户余额不足的方法请告诉我
  • @Ricky,是一个空值,我需要用它来处理下一笔交易,告诉用户余额不足,下次他们尝试转账时,它会检查他们有多少想要转移,剩余多少,我认为这不是正确的方法,如果你有任何其他方式请告诉我
  • 如果您编写插入查询,那么它将添加新的记录行,我认为您必须要更新字段以获取完整列名的 bal 金额

标签: php balance


【解决方案1】:

你必须这样写查询

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

【讨论】:

    【解决方案2】:

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

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

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

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

    更新

    不确定我是否完全理解您的问题,但根据我得到的解决方案可能如下所示:

    创建用户表:

    user_id | username | balance
    

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

    创建事务表:

    transaction_id | user_id | pdate | bdate | amount | 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)。 希望这会有所帮助。

    【讨论】:

    • 但我还想让您知道,在用户转移到交易表中的完整字段后,我已经存储了余额,当用户进行转移时,剩余余额存储在那里有效很好,但是我现在需要的是如何使用它来处理传输以检查该完整字段有多少以及用户想要传输多少,因为我这样做的方式只是检查该字段是否为空或它匹配输入金额,如果匹配输入金额则继续,如果不匹配。
    • 输入金额回显资金不足,全栏为空也会回显不足
    • 等等,用户之间是否正在转移贷方/借方?
    • 我只需要一个简单的代码,比如当用户有 10,000 并决定转移 5000 时让它继续。并且不要仅在用户余额不足或试图使他/她的余额中的更高金额时才继续,例如当用户有 10,000 并尝试转移 12,000 时,除非用户有他们余额中的那种金额,如果他们尝试向他们转入12,000 echo不足的资金,那么只有10,000到down和0之间是不足的。
    • 因为在我的代码中,用户只会转移总余额,例如当用户有 10,000 并决定在我的代码中转移 5,000 时,它会说您的资金不足,除非用户尝试使全部金额为 10,000,这就是我验证它的方式,就像用户名和密码一样,但这不是我需要的方式,只是一个简单的代码,允许用户在他/她以下进行转账金额并在他们尝试赚取不属于他们金额的更高金额时拒绝,并且在他们尝试赚取 0 金额时也拒绝
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多