MYSQL值与输入

时间:2015-07-28 00:44:07

标签: php mysql

我是程序员,我创建了一个与积分一起使用的简单游戏。由于这个社区的一些帮助,现在一切正常。

只有一件事我无法正常工作。让我解释。人们可以捐款为我的项目做出贡献。当他们点击一组四个按钮时,值会显示在输入文本框中。我使用以下代码:

<button value="0.10" class="round-button">&#8364; 0.10</button>
<button value="0.25" class="round-button">&#8364; 0.25</button>
<button value="0.50" class="round-button">&#8364; 0.50</button>
<button value="1.00" class="round-button">&#8364; 1.00</button>

<form action="validate.php" method="post">
<input name="total" type="text" class="total" id="total" />
<input type="image" src="image/accept.fw.png" name="submit" />
</form>

这并不困难。但接下来我把它发布到我的文件validate.php。这里的一切都很好,这是我的validate.php

include 'sql.php';
$query_pretest = mysql_query("SELECT credits FROM users WHERE username='".$_SESSION['login']."'");
$check = mysql_fetch_array($query_pretest);

$total = $_POST['total']; 
if ($check['credits']<=($_POST['total'])) { echo 'not enough money in your account'; }
else { mysql_query("UPDATE users SET credits = (credits -'{$_POST[total]}') WHERE username='".$_SESSION['login']."'"); echo 'Thanks for your donation'; }

好的,这样可行,但现在发生了一些奇怪的事情。当用户选择例如0.85美分并且他的帐户中有5.00时,用户在捐赠4.00后离开。看起来价值0.85转移到1.0?

我做错了什么,或者我在数据库中需要其他什么? 我在名为Credits的数据库中的列有一个'int(11)',所以也许我需要设置它不同?有人能指点我吗?

感谢!!!

3 个答案:

答案 0 :(得分:2)

INTEGER类型只能存储整数,而不能存储分数。在数据库中存储货币值有两种常用方法:

  1. 使用DECIMAL(11,2)代替INT(11)作为数据类型。这指定了一个总数为11位的值,包括小数点后的2位数。

  2. 使用INT(11),并将所有内容乘以100,然后存储分数而非欧元数。也可以在HTML中执行此操作,例如

    <button value="10" class="round-button">&#8364; 0.10</button>
    
  3. 我不建议使用FLOATDOUBLE,因为这会引入浮点错误。

答案 1 :(得分:0)

将您的int更改为您的数据库中的double

答案 2 :(得分:0)

感谢你的回复,它就是诀窍。我现在要更多地研究MySQL数据库的使用。愚蠢的我......