转账余额

时间:2013-11-10 12:59:40

标签: php mysql database

我正在建立一个网站,用户可以将资金转移到另一个网站。

我的代码正常工作,因此每个用户都可以发送资金,但是我不知道如何只让他们转移他们所拥有的东西..(如果他们有10个不能发送11)

见下面的代码

$result = mysql_query("UPDATE member
SET balance = IF(personID = $accountfrom, balance-$amount, balance+$amount)
WHERE personID IN ($accountfrom, $accountto)")
 or die(mysql_error());

任何人都可以帮忙吗?

已更新

$select_result = $mysqli->query("SELECT * FROM member where personID="$accountfrom" ");
while ($select = mysqli_fetch_assoc($select_result)) {
   $balance=$select['amount'];
   if($balance=>$balance){
       $result = mysql_query("UPDATE member
       SET balance = IF(personID = $accountfrom, balance-$amount, balance+$amount)
       WHERE personID IN ($accountfrom, $accountto)")
       or die(mysql_error());
   }
}

显示错误:

  

解析错误:语法错误,第264行> /home/u704855438/public_html/transfer.php中的意外T_VARIABLE

第266行是if($balance=>$amount){

2 个答案:

答案 0 :(得分:1)

您需要在转移可用资金之前进行检查,“用户来自”可以做什么,他的余额大于转移金额,或等于。

使用引擎InnoDB的MySQL表是事务安全的。更新后,如果所有处理都正确,则需要执行“commit”命令,否则应该“回滚”。在这种情况下,您将拥有数据库的完整性。

此外,有一个事务日志表是有意义的,其中将记录所有事务。例如,您可以拥有以下列personFromId,personToId,amount,transactionDate。对于用户之间的一次转移,将创建2行+ amount和-ount。

答案 1 :(得分:1)

只需检查您的数据库,他想要转移的金额低于或等于他的金额。如果它不传输它(所以不要做任何事情并显示错误信息)只需放一个

if($amount_in_database>=$amount_he_wants_to_transfer){

}

围绕您的更新查询。

要获取数据库中的金额,请执行以下操作:

$select_result = $mysqli->query("SELECT * FROM member where personid='$accountfrom' ");

之后使用此['amount']应该是您的资金栏目

while ($select = mysqli_fetch_assoc($select_result)) {
$amount_in_database=$select['amount'];
}

所以这就是你的代码:

$select_result = $mysqli->query("SELECT * FROM member where personid=$accountfrom ");
while ($select = mysqli_fetch_assoc($select_result)) {
   $amount_in_database=$select['amount'];
   if($amount_in_database>=$amount_he_wants_to_transfer){
       $result = $mysqli->query("UPDATE member
       SET balance = IF(personID = $accountfrom, balance-$amount, balance+$amount)
       WHERE personID IN ($accountfrom, $accountto)");

   }
}