-1

我正在建立一个用户可以相互转移资金的网站。

我的代码可以正常工作,因此每个用户都可以发送资金,但是我不确定如何只让他们转移他们拥有的东西..(如果他们有 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){

4

2 回答 2

1

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

if($amount_in_database>=$amount_he_wants_to_transfer){

}

围绕您的更新查询。

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

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

之后使用这个 where['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)");

   }
}
于 2013-11-10T14:10:33.760 回答
1

您需要在转移可用资金之前检查“用户来自”可以执行此操作以及他的余额大于或等于转移金额。

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

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

于 2013-11-10T13:54:28.970 回答