MySQL 的类型 PHP 中的十进制值

Type of MySQL Decimal value in PHP

我在 PHP 中使用 BC Math 库,如您所知,提供给 BC 函数的数据必须是字符串,否则可能会出现非常奇怪的结果。

我在 MySQL.

中存储十进制值 (18,10)

我的问题是:

  1. 当我在 PHP 中获取这些值时,它们的类型是什么,它们是字符串吗?我可以直接在 BC 中使用它们,例如 bcmul($database_decimal_value , '1', '10') 吗?

  2. 我可以使用 BC 函数的输出(我猜是字符串)并直接插入 MySQL 十进制类型吗?

P.S。我已经阅读了 MySQL 参考资料,它说:Values for DECIMAL columns no longer are represented as strings that require 1 byte per digit or sign character. 不确定这是否意味着它们不再是字符串。

编辑:

我用下面的代码测试答案:

<?php
$var = 0.00001;
echo bcmul('10', "$var", '5');
?>

但它回显 0 而不是 0.00010 ! 如果我将 $var = 0.00001 更改为 $var = '0.00001'; (这是字符串)它可以工作

无论值本身是字符串还是数字,您都可以强制将其作为字符串传递使用正确的引号 使用strval()

bcmul(strval($database_decimal_value) , '1', '10');

是的,您可以将这些值不带引号传递给 MySQL,它会将它们视为数字