MySQL SELECT查询在小数点后舍入到12位

时间:2014-10-27 10:45:30

标签: php mysql mysqli

我在PHP中有以下MySQL查询:

function queryTagsTable($tag) {
    global $pdo;
    $sql = "SELECT id, latitude, longitude FROM tbl WHERE id IN (SELECT id FROM `tbl_tags` WHERE tag = :tag)";
    $stmt = $pdo->prepare ( $sql );
    $stmt->bindValue(':tag', $tag);
    if ($stmt->execute()) {
        $result = $stmt->fetchAll();
        foreach ($result as $row) {
            echo $row['id'].', '.$row['latitude'].', '.$row['longitude'].' ';
        }
    }
}

在我的数据库中,对于等效的原始sql查询,我得到以下结果:

276     32.082504109184285  34.89628862589598

然而,我的PHP代码的回声似乎总是将纬度和经度结果舍入到小数点后的12位,产生:

276, 32.082504109184, 34.896288625896

在我的数据库中,id是INTEGER,而纬度和经度是DOUBLE。我希望PHP查询返回纬度和经度的完整值,以便产生最大的精度。我可以做些什么来从我的PHP函数中获得这些结果的全部值?

1 个答案:

答案 0 :(得分:2)

我怀疑问题是双精度在MySQL和PHP中有不同的精度。尝试将双精度转换为字符串,以便PHP不会自动转换它们:

SELECT id, CAST(latitude AS CHAR(32)) AS latitude, CAST(longitude AS CHAR(32)) AS longitude FROM tbl WHERE id IN (SELECT id FROM `tbl_tags` WHERE tag = :tag)