MySQL 的类型 PHP 中的十进制值
Type of MySQL Decimal value in PHP
我在 PHP 中使用 BC Math
库,如您所知,提供给 BC 函数的数据必须是字符串,否则可能会出现非常奇怪的结果。
我在 MySQL.
中存储十进制值 (18,10)
我的问题是:
当我在 PHP 中获取这些值时,它们的类型是什么,它们是字符串吗?我可以直接在 BC 中使用它们,例如 bcmul($database_decimal_value , '1', '10')
吗?
我可以使用 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,它会将它们视为数字
我在 PHP 中使用 BC Math
库,如您所知,提供给 BC 函数的数据必须是字符串,否则可能会出现非常奇怪的结果。
我在 MySQL.
中存储十进制值 (18,10)我的问题是:
当我在 PHP 中获取这些值时,它们的类型是什么,它们是字符串吗?我可以直接在 BC 中使用它们,例如
bcmul($database_decimal_value , '1', '10')
吗?我可以使用 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,它会将它们视为数字