【发布时间】:2021-11-02 17:07:00
【问题描述】:
我是 sql 和 php 的新手,但我想弄清楚如何安全地存储从 HTML 表单获取的十进制值,在 php 中对其进行清理,然后将其发送到 sql 数据库。目前,我将 HTML 值转换为浮点数并使用 FILTER_SANITIZE_NUMBER_FLOAT 进行清理。 sql 数据值类型为十进制(10,5)。但是当我将 -2.5 存储到数据库中时,它会显示为 -25.00000000。我知道我的大部分代码都是正确的,因为当我从同一个表单中获取其他值时,对它们进行清理,然后将它们输入到数据库中,它可以正常工作。
$Goal_howmch = (float) filter_input(INPUT_POST, 'How_much', FILTER_SANITIZE_NUMBER_FLOAT);
<label for="How much"><b>How much: </b></label>
<select name="How_much" id="How much" default="0" required>
<option value=-10>-10%</option>
<option value=-7.5>-7.5%</option>
<option value=-5>-5%</option>
<option value=-2.5>-2.5%</option>
<option value=0 selected>0%</option>
<option value=2.5>2.5%</option>
<option value=5>5%</option>
</select>
【问题讨论】:
-
您的代码有点不清楚,因为它混合了 html 和 PHP。您需要弄清楚的第一件事是发生错误的时间点。例如,在设置 $Goal_howmch 之后的行上,您应该执行
echo $Goal_howmch;。如果看起来不错,请在从 Web 浏览器发送之前确定它是什么。如果没问题,请检查您的 PHP 脚本收到它时的内容。接下来,检查如果在 PHP 代码中硬编码 -2.5 并将其发送到数据库会发生什么。最后,直接使用您的数据库并尝试使用insert语句插入该值。你现在知道错误的地方了。 -
另外,您是否在代码中对此值进行任何其他计算。我注意到您将其列为百分比。也许你也在做这方面的事情。