我遇到了这种非常讨厌的行为,我想知道我是做错了什么,或者这是故意的(如果是这样,为什么).
每当我在php(5.3)中有一个double类型的变量并且我想在一个double类型的字段中将它插入到数据库(MYSQL 5.0)中时,该值总是向下舍入到该点后面的6位数.我正在使用PDO.所以下面的代码:
$stmt = $pdo->prepare("UPDATE someTable SET someDouble = :somePHPDouble;");
$number = 0.11124379542256;
$stmt->bindValue(':somePHPDouble', $number);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
结果在0.111244中插入db.但是当我将变量转换为绑定表达式中的字符串(!)时:
$stmt->bindValue(':somePHPDouble', (string)$number);
Run Code Online (Sandbox Code Playgroud)
它正确插入0.11124379542256.
这里发生了什么?我很无能为力.someDouble的MySQL数据类型实际上是双重的,当通过mysql控制台插入它时它才起作用.而且php中的变量实际上是双倍的,所以在我看来PDO内部出了问题.
在此先感谢-CodePoet.
| 归档时间: |
|
| 查看次数: |
972 次 |
| 最近记录: |