我有一个名为" 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的结构的情况下完全按照给定的方式进行保存?
答案 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