php - MySQL SELECT 查询四舍五入到小数点后 12 位

标签 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 是整数,而纬度和经度是 double 。我希望 PHP 查询返回纬度和经度的完整值,以便产生最大的精度。我该怎么做才能从我的 PHP 函数接收这些结果的全部值?

最佳答案

我怀疑问题在于 MySQL 和 PHP 中的 double 有不同的精度。尝试将 double 型转换为字符串,以便 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)

关于php - MySQL SELECT 查询四舍五入到小数点后 12 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26585802/

相关文章:

php - mysql 错误未正确显示

PHP MySQLi 准备语句 - SELECT

php - CodeIgniter 的 ci_sessions 是否需要偶尔清空?

java - JPA - 多对一,其中子级具有父级 ID

php - mysqli 持久连接

javascript - 如何使用 node.js 从 mysql 获取可读字符串?

python - 如何通过 Django 中的唯一检查避免竞争条件

javascript - 通过 onclick 事件将 value 属性数据从 HTML 端传递到 JavaScript 函数

php - SQL 代码在 PHP 中不起作用,但在 phpmyadmin 中可以

php - 使用正则表达式删除字符串中不需要的字符