【发布时间】:2013-06-11 23:59:12
【问题描述】:
我猜这之前已经出现过,但我找不到我的问题的答案。这是一个小代码sn-p:
$stmt = $this -> db -> query("
SELECT
`Field`
FROM
`Table`
WHERE
(`ID` = 33608)");
var_dump($stmt -> fetch());
这是我得到的结果:
array(1) { ["Field"]=> float(1.7999999523163) }
但是,MySQL 数据库中的数据是 1.8。该字段的类型是 float(7,4)。 $this->db 是一个 PDO 对象。 我最近迁移到 PDO(来自 AdoDB),并且这段代码之前运行良好。我不确定这里出了什么问题。你能指出我正确的方向吗? 谢谢!
【问题讨论】:
-
我无法重现它。您是否在 PDO 构造函数中传递了任何特定设置?
-
PDO 的 MySQL 驱动程序根据
PDO::ATTR_EMULATE_PREPARES设置返回浮点数或字符串,但我仍然得到float(18)或string(7) "18.0000":-? -
这是我用来初始化 PDO 的(抱歉,我不知道如何在此处添加代码块):尝试 { $pdo = new Db("mysql:host=".DBHOST. ";dbname=".DBNAME.";charset=utf8", DBUSER, DBPASS); $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { die('DB Error'); }