【问题标题】:Inserting PHP float/decimal values into MySQL将 PHP 浮点数/十进制值插入 MySQL
【发布时间】: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


【解决方案1】:

您告诉 php 将 $match_id 和 $rating 转换为整数。你应该使用:

$sql->bind_param("id", $match_id, $rating);

而不是

$sql->bind_param("ii", ...

【讨论】:

  • 啊,谢谢!实际上,我之前确实尝试将其更改为“d”而不是“i”,但我对代码进行了其他编辑,但没有使其工作。我将这些更改还原为我上面的代码并将其更改为“d”,现在它可以正常工作了。 :)
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多