Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中MySQL十进制值的类型_Php_Mysql_Bc - Fatal编程技术网

PHP中MySQL十进制值的类型

PHP中MySQL十进制值的类型,php,mysql,bc,Php,Mysql,Bc,我在PHP中使用的是BC Math库,正如您所知,提供给BC函数的数据必须是字符串,否则可能会产生非常奇怪的结果 我正在MySQL中存储十进制值(18,10) 我的问题是: 在PHP中获取这些值时,这些值的类型是什么,它们是字符串吗?我可以直接在BC中使用它们吗,比如bcmul($database\u decimal\u value,'1','10') 我可以使用BC函数的输出(我猜是字符串)直接插入MySQL十进制类型吗 另外,我读过MySQL参考,它说:十进制列的值不再表示为每位数或符号

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

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

我的问题是:

  • 在PHP中获取这些值时,这些值的类型是什么,它们是字符串吗?我可以直接在BC中使用它们吗,比如
    bcmul($database\u decimal\u value,'1','10')

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

  • 另外,我读过MySQL参考,它说:
    十进制列的值不再表示为每位数或符号字符需要1字节的字符串。
    不确定这是否意味着它们不再是字符串

    编辑: 我用以下代码测试答案:

    <?php
    $var = 0.00001;
    echo bcmul('10', "$var", '5');
    ?>
    
    
    
    但它的回声是
    0
    ,而不是
    0.00010

    如果我将
    $var=0.00001
    更改为
    $var='0.00001'(即字符串)它工作

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


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

    非常感谢,我的第二个问题也是这样,对数据库来说,也可以不带引号地发送到数据库。我尝试了这个方法,但它不起作用,请您检查我上面的
    编辑
    好吗?
    echo bcmul('10',“$variable”, '5');使用我使用过的代码和相同的结果(更新编辑),仅当我使用
    $var='0.00001'时有效
    
    bcmul(strval($database_decimal_value) , '1', '10');