0

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

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

4

2 回答 2

0

你必须这样写查询

$query = "UPDATE $UUname SET full='".$bal."'"; 
$update = mysql_query($query) or die(mysql_error());
于 2014-08-08T10:04:35.193 回答
0

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

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

$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)。希望这可以帮助。

于 2014-08-08T10:05:24.050 回答