我有2个数据库字段
`decval` decimal(5,2)
`intval` int(3)
我有2个pdo查询来更新它们。更新int的那个工作正常
$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
但我无法更新小数字段。我尝试了以下3种方法,但没有任何作用
$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
问题似乎是数据库类型decimal
?对于PDO::PARAM
类型的字段,是否有decimal
?如果没有,我将使用什么作为解决方法?
答案 0 :(得分:75)
小数/浮点数没有PDO::PARAM
,你必须使用PDO::PARAM_STR
。
答案 1 :(得分:0)
UP必须使用PDO :: PARAM_STR相同,并注意如果数据库中的列是NUMERIC(M,D)或十进制(M,D)类型,则应观察到M是字符数的精度应该是您可以输入的字符总数,D是小数位数。在示例NUMERIC(10,2)中,我们有8个房子到精确位置和两个小数位。所以我们总共有10个字符,其中2个为小数位保留。
答案 2 :(得分:0)
我找到了一个解决方案,发送像PDO :: PARAM_STR这样的十进制参数,在sql server存储过程中接收它就像十进制(int,dec)
PHP
$stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR);
SQL SERVER,STORE PROCEDURE:
@valor_escala_desde decimal(18,2),
已完成。
答案 3 :(得分:0)
对所有非int或Bool类型的列类型使用PDO :: PARAM_STR