我正在建立一个网站,用户可以将资金转移到另一个网站。
我的代码正常工作,因此每个用户都可以发送资金,但是我不知道如何只让他们转移他们所拥有的东西..(如果他们有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){
答案 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)");
}
}