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

dmo*_*ain 74 php mysql database pdo

我有2个数据库字段

`decval` decimal(5,2)
`intval` int(3)
Run Code Online (Sandbox Code Playgroud)

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

$update_intval->bindParam(':intval', $intval, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

但我无法更新小数字段.我尝试了以下3种方法,但没有任何效果

$update_decval->bindParam(':decval', $decval, PDO::PARAM_STR);
$update_decval->bindParam(':decval', $decval, PDO::PARAM_INT);
$update_decval->bindParam(':decval', $decval);
Run Code Online (Sandbox Code Playgroud)

看来问题出在数据库类型上decimal?是否存在PDO::PARAM类型的字段decimal?如果没有,我将使用什么作为解决方法?

Ali*_*xel 80

没有任何PDO::PARAM小数/浮点数,你将不得不使用PDO::PARAM_STR.

  • @dmontain:来自PHP手册:**与PDOStatement :: bindValue()不同,*变量被绑定为引用*并且仅在PDOStatement :: execute()被调用时进行评估.** - 你有如果要使用`strval()`,请使用`bindValue()`. (16认同)
  • @dmontain:它应该开箱即用(当没有指定时,'PDO :: PARAM_STR`是默认值),**你不应该**改变你的列数据类型.只需用单引号或双引号或`strval()`括起来,就像这样:`$ update_decval-> bindParam(':decval',strval($ decval),PDO :: PARAM_STR);`. (5认同)
  • 这是我在尝试发布问题之前尝试过但没有用的事情之一. (2认同)