PDO :: PARAM是十进制的types吗?

我有2个数据库字段

`decval` decimal(5,2) `intval` int(3) 

我有2个更新它们的pdo查询。 更新int的工作正常

 $update_intval->bindParam(':intval', $intval, PDO::PARAM_INT); 

但是我不能更新小数字段。 我已经尝试了以下三种方式,但没有任何工作

 $update_decval->bindParam(':decval', $decval, PDO::PARAM_STR); $update_decval->bindParam(':decval', $decval, PDO::PARAM_INT); $update_decval->bindParam(':decval', $decval); 

看来问题是数据库types的decimal ? 是否有一个PDO::PARAMtypes的decimal字段? 如果不是,我该如何解决这个问题?

对于小数/浮点数没有任何PDO::PARAM ,您将不得不使用PDO::PARAM_STR

我发现,寻找一种使用PDO存储DOULBE的方法,如果你不提供第三个参数(即PDO :: PARAM_ *),它会使用某种魔法并正确存储数字。 所以也许如果你只是离开PDO担心参数types,并愉快地绑定:decval到一个$ decval和跳转到下一个任务:-))

UP必须使用相同的PDO :: PARAM_STR,并且注意如果数据库中的列是NUMERICtypes(M,D)或者十进制数(M,D),那么应该观察到M是字符数的精度应该是您可以input的字符总数,以及D小数位数。 在NUMERIC(10,2)的例子中,我们有8个房子的精度和两位小数的地方。 所以我们共有10个字符,其中2个保留小数位。

我find了一个解决scheme,像PDO :: PARAM_STR发送小数参数,在sql服务器存储过程收到它像十进制(int,dec)

PHP

 $stmt_e->bindParam(':valor_escala_desde', $valor_escala_desde, PDO::PARAM_STR); 

SQL SERVER,存储过程:

 @valor_escala_desde decimal(18,2), 

并完成。