PHP中的MySQL十进制值的类型

时间:2015-05-05 18:46:41

标签: php mysql bc

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

我在MySQL中存储十进制值(18,10)。

我的问题是:

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

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

  3. 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';(这是字符串),则可以使用

1 个答案:

答案 0 :(得分:1)

无论值本身是字符串还是数字,您都可以使用strval()

强制使用适当的引号将其作为字符串传递
bcmul(strval($database_decimal_value) , '1', '10');

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