【发布时间】:2013-12-03 18:06:35
【问题描述】:
说实话,这是一个非常简单的问题。我一直在谷歌上寻找解决方案,但似乎没有任何效果。我的数据库中有以下字段:
decimal(2,1)
我在 PHP 中有两个变量(来自通过 POST 插入表单的值)我想将它们加在一起,然后插入到这个字段中。
$sql2 = $link->prepare("INSERT INTO league_stats (match_id, rating)
VALUES (?, ?)");
$sql->bind_param("ii", $match_id, $rating);
$match_id = $_SESSION["match_id"];
$rtg1 = $_POST[$rating_1"];
$rtg2 = $_POST[$rating_2"] / 10;
$rating = $rtg1 + $rtg2;
例如,rtg1 为 7,rtg2 为 3 除以 10,因此结果为 0.3。然后我将这两个数字相加得到 7.3。当我将它插入数据库时,它总是将第二个数字显示为 0。所以它会显示为 7.0 而不是 7.3。我尝试了许多不同的方法,但总是得到完全相同的结果。
我什至将 $rating 分配给一个原始值,只是为了测试我的变量是否有问题:
$rating = 7.5
仍然是 7.0。
有人可以提供一个示例,说明如何将浮点类型的 PHP 变量正确插入 MySQL 吗?还可以解释如何正确地将两个浮点值加在一起?谢谢!
【问题讨论】:
-
确保mysql中该字段的数据类型是float
-
你告诉你的数据库库你正在插入一个 int。因此,如果您传入
7.5,则 db 库已被告知它应该被截断为7,因为它应该是一个 int。 -
我不明白,你在设置值之前绑定: $sql->bind_param("ii", $match_id, $rating);, $match_id = $_SESSION["match_id"]; $rtg1 = $_POST[$rating_1"]; $rtg2 = $_POST[$rating_2"] / 10; $评级 = $rtg1 + $rtg2;
-
@jacouh,这很正常。当代码调用 execute() 时,Mysqli 会获取这些变量的值。这允许您绑定一次变量,然后多次执行 SQL,每次都更改变量。
-
@Bill Karwin,谢谢。我总是使用 PDO::bindValue()。我会阅读手册。
标签: php mysql insert floating-point decimal