小编Cod*_*oet的帖子

通过PDO将双重插入MySQL时精确丢失

我遇到了这种非常讨厌的行为,我想知道我是做错了什么,或者这是故意的(如果是这样,为什么).

每当我在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.

php mysql pdo

4
推荐指数
1
解决办法
972
查看次数

标签 统计

mysql ×1

pdo ×1

php ×1