php 我需要从一个表中取出一个balance变量,然后将其插回到同一个表中,使其具有不同的值

disho6za  于 2023-02-11  发布在  PHP
关注(0)|答案(2)|浏览(122)

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

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

ttisahbt

ttisahbt1#

您必须这样编写查询

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

ibrsph3r2#

从您的帖子中还不清楚,但我假设您有一个表$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)对所有用户余额进行完全更新。希望这能有所帮助。

相关问题