rjddev Posted October 20, 2013 Share Posted October 20, 2013 I'm facing a small problem when I withdraw/deposit money. For example, I have $98,007,285,155 money in my bank or on hand, I want to deposit/withdraw it in one time, but it deposits/withdraws only $2,147,483,647 max. I have both columns on bigint(250). Is there another type I should use in the database for this so players are able to deposit/withdraw their cash in one click? Quote Link to comment Share on other sites More sharing options...
SRB Posted October 20, 2013 Share Posted October 20, 2013 Doesn't sound like the database is the issue, but rather the PHP. If you are using something like... $amount = abs(@intval($_POST['amount'])); The intval will make it "int value", so you will have the same problem as the database running with int(11) -- it maxes at 2,147,483,647 Try using float... or a better economic model. Quote Link to comment Share on other sites More sharing options...
rjddev Posted October 20, 2013 Author Share Posted October 20, 2013 Doesn't sound like the database is the issue, but rather the PHP. If you are using something like... $amount = abs(@intval($_POST['amount'])); The intval will make it "int value", so you will have the same problem as the database running with int(11) -- it maxes at 2,147,483,647 Try using float... or a better economic model. Thank you for the help, I have now removed the (int) from $amount and done it like this. if(isset($_POST['deposit']) != "") { $amount = mysql_real_escape_string($_POST['damount']); $notallowed = array('$', '-', '_', '+', '=', '<', '>', ','); $amount = str_replace($notallowed, "", $amount); if(!preg_match('#^[0-9]+$#', $amount)) { $message = "Please enter a valid amount."; } else if($amount < 1) { $message = "Please enter a valid amount."; } else if($amount <= $player->money) { $message = "You have deposited " . prettynum($amount); $newbank = $amount + $player->bank; $newmoney = $player->money - $amount; $result = mysql_query("UPDATE `grpgusers` SET `bank` = '$newbank', `money` = '$newmoney' WHERE `id` = '".$player->id."'"); } } if(isset($_POST['withdraw']) != "") { $amount = mysql_real_escape_string($_POST['wamount']); $notallowed = array('$', '-', '_', '+', '=', '<', '>', ','); $amount = str_replace($notallowed, "", $amount); if(!preg_match('#^[0-9]+$#', $amount)) { $message = "Please enter a valid amount."; } else if($amount > $player->bank) { $message = "You do not have that much money in your bank"; } else if($amount < 1) { $message = "Please enter a valid amount."; } else if($amount <= $player->bank && $amount > 0) { $newbank = $player->bank - $amount; $newmoney = $player->money + $amount; $result = mysql_query("UPDATE `grpgusers` SET `bank` = '$newbank', `money` = '$newmoney' WHERE `id` = '".$player->id."'"); $message = "You have withdrawn " . prettynum($amount); } } if(isset($message)) { echo Message($message); } This seems to be secure and working correct. Thank you :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.