PDO ile MySQL içine bir duble takmadan iken Hassas kaybı

1 Cevap php

Bu gerçekten sinir bozucu davranış içine çalıştırmak ve ben yanlış bir şey yapıyorum bilmek istiyorum, ya da bu kasıtlı olup olmadığını (ve eğer öyleyse, neden).

Ben tipi double olan php bir değişken (5.3) sahip ve tipi double olan bir alanda veritabanı (MySQL 5.0) içine eklemek istediğiniz zaman, değeri her noktası arkasında 6 basamak aşağı yuvarlanır aldığında Ben PDO kullanıyorum. Yani aşağıdaki kodu:

$stmt = $pdo->prepare("UPDATE someTable SET someDouble = :somePHPDouble;");
$number = 0.11124379542256;
$stmt->bindValue(':somePHPDouble', $number);
$stmt->execute();

Db takılı 0.111244 sonuçları. Ama ben gibi bağlama ifadesi bir dize değişkeni döküm zaman (!):

$stmt->bindValue(':somePHPDouble', (string)$number);

o ,11124379542256 düzgün olarak ekler.

Ne oluyor burada? Ben clueless değilim. SomeDouble MySQL veri türü gerçekten bir çift, ve mysql konsol yoluyla takarken sadece çalışır. Ve php değişken gerçekten bir çift, bu yüzden bir şey PDO'nun yanlış içinde gider gibi geliyor bana.

Thanks in advance, -CodePoet.

1 Cevap

Bu kasıtlı, ne de yanlış bir şey yapıyorsun ne olduğunu. Bir PHP hata gibi görünüyor.

Orada sözü olanlara karşı kesin PHP sürümünü kontrol etmek isteyebilirsiniz böylece this bug report göre, bu, PHP 5.2.11 için sabit, ancak son 5.3 şube için olmuştur.