使用Php

时间:2017-01-22 02:35:52

标签: php mysql

我正在从表pre_product中选择一些数据, 然后我向用户展示他们,所以他选择一些行并填充一些盒子, 然后我去更新pre_product并将新数据插入另一个表

`anodization` 

enter image description here

问题是,在提交更新的数据后,更改为0.00000 不是我想要它的价值。 这是我的代码简要

<?php
$pp_select = mysql_query("SELECT * FROM pre_product
WHERE pre_product_status != 'anodized'
AND pre_product_status != 'packed'");

    while ($row = mysql_fetch_array($pp_select))
    {
        $pp_id[$loop] = $row['pre_product_number'];
        $pp_date[$loop] = $row['pre_product_date'];
        $pp_available[$loop] = $row['pre_product_anodization_availabe'];


        if($submit[$loop])
        {
                /*PRE-PRODUCT DATABASE*/
                $available_update[$loop] = $pp_available[$loop] - $weight[$loop];
                //Check if pp is fully anodized
                if($available_update[$loop] == 0)
                    $pp_new_status[$loop] = "anodized";
                else $pp_new_status[$loop] = "semi-anodized";
                $update_pp = mysql_query("UPDATE pre_product
                                                  SET pre_product_anodization_availabe = '$available_update[$loop]'
                                                  AND pre_product_status = '$pp_new_status[$loop]'
                                                  WHERE pre_product_number = '$pp_id[$loop]'
                                                  AND pre_product_date = '$pp_date[$loop]'");

            }
        $loop++;
        }

问题再次提交后,pre_product_anodization_availabe的值将更改为0.00000

1 个答案:

答案 0 :(得分:0)

您的值正在更改为0.00000,因为您使用的是float数据类型(5,5),其中第二个数字是小数位数。

查看this资源,特别是:

  

MySQL允许非标准语法:FLOAT(M,D)或REAL(M,D)或DOUBLE   PRECISION(M,d)。这里,(M,D)表示可以存储最多值   总共M位,其中D位可以在小数点后面。   例如,定义为FLOAT(7,4)的列将显示为-999.9999   何时显示。 MySQL在存储值时执行舍入,所以如果你   将999.00009插入FLOAT(7,4)列,大致结果为   999.0001。