我正在从表pre_product
中选择一些数据,
然后我向用户展示他们,所以他选择一些行并填充一些盒子,
然后我去更新pre_product
并将新数据插入另一个表
`anodization`
问题是,在提交更新的数据后,更改为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
答案 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。