php - 使用 php 5.5.19 和 mysqlnd 执行 select 语句时浮点字段自动舍入

标签 php mysql

我有一个包含浮点字段('ferate')的数据库表,我将长度设置为 15,精度设置为 2。每当我执行这样的 select 语句时,它都会返回一个整数。我想将“ferate”检索为带 2 位小数的 float 。 “ferate”的默认值应为 44.86,但我得到的是 45。

public function get_defaultrates () {
    $defaultfuelrates = NULL; // array 
    if (!$this->dbconn->connect_errno) {
        $stmt = $this->dbconn->prepare (
            "SELECT * FROM dffuelexciserates"
        );
        $stmt->execute();
        if ($stmt->errno === 0) {
            $result = $stmt->get_result();

            if ($result->num_rows >= 1) {
                $defaultfuelrates = array ();
                while ($row = $result->fetch_assoc()){
                    var_dump ($row);
                    $tr_dffuelexciserates = new tr_dffuelexciserates ();
                    $tr_dffuelexciserates->dfferid = $row['dfferid'];
                    $tr_dffuelexciserates->ftid = $row['ftid'];
                    $tr_dffuelexciserates->ferate = $row['ferate'];
                    array_push ($defaultfuelrates, $tr_dffuelexciserates);
                }
            }
            $result->free();    
        }
        $stmt->close();
    }
    return $defaultfuelrates;
}

最佳答案

我正在回答我自己的问题。 我已将类型从 FLOAT(15,2) 更改为 DECIMAL(15,2),现在可以使用了。我从这里找到了一个很好的提示:basic link .您可以将 Base 10 数值数据存储到 Float 字段,但我认为在检索 Float 值并使用 mysqlnd 在 php 中将其转换为 Base 10 值时会有副作用。

关于php - 使用 php 5.5.19 和 mysqlnd 执行 select 语句时浮点字段自动舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42483313/

相关文章:

php - 特定帐户的 Google Latitude API 永久授权

php - mysqli_real_escape_string 无法正常工作

MySQL BETWEEN 查询 w/BETWEEN ?和?

php - 无法在类中使用 PDO

php - 在每个单词后最多插入一个前导和尾随换行符

php - 当仅为用户创建用户时,如何创建新文件夹

php - 克隆输入字段时自动完成功能不起作用

PHP使用函数查找学生记录

mysql - 如何找到 MongoDB 字典中出现次数最多的字段?

MYSQL <> 运算符代替 NOT IN