php mySql Update Set向下舍入十进制数

时间:2016-10-13 16:52:31

标签: php mysql

我有一个名为" Price"

的列的数据库

类型为DECIMAL,长度/值设置为15,4,默认值为0.0000

运行以下内容时:

            $x=1;
            $table[$x]['MSRP'] = 10.5000;
            $table[$x]['Materialid'] = 1744000004;

            $mysql['updateprice'] = $mysql['conn']->prepare("UPDATE oc_product SET price = ? WHERE sku = ?");
            $mysql['updateprice']->bind_param("ii", $table[$x]['MSRP'],$table[$x]['Materialid']); //s=string i=integer d=double b=blob
            $mysql['updateprice']->execute();

保存的号码显示为" 10.000"

无论我使用哪个号码,都会发生这种情况。

例如,

12.7变为12.0000

12.7000变为12.0000

13.1变为13.0000

13.1000变为13.0000

使用phpmyadmin插入数字时,它可以正常工作。

我尝试过使用floatval而没有任何运气。

如何在不修改db的结构的情况下完全按照给定的方式进行保存?

2 个答案:

答案 0 :(得分:1)

您将变量绑定为整数。您需要将它们绑定为双精度数,正如您在注释代码中所述

$mysql['updateprice']->bind_param("di", $table[$x]['MSRP'],$table[$x]['Materialid']); 
//s=string i=integer d=double b=blob

答案 1 :(得分:1)

        $mysql['updateprice']->bind_param("ii", $table[$x]['MSRP'],$table[$x]['Materialid']); //s=string i=integer d=double b=blob

尝试

使用bind_param(“dd”,...)

如下所示

        $mysql['updateprice']->bind_param("dd", $table[$x]['MSRP'],$table[$x]['Materialid']); //s=string i=integer d=double b=blob