PDO :: PARAM的类型为十进制?

时间:2010-04-27 03:58:46

标签: php mysql database pdo

我有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?如果没有,我将使用什么作为解决方法?

4 个答案:

答案 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