【问题标题】:Using PHP & ODBC_RESULT, Why am I losing the 4th decimal place使用 PHP 和 ODBC_RESULT,为什么我会丢失第 4 位小数
【发布时间】:2014-04-11 19:50:27
【问题描述】:

我希望这是一个简单的问题。

如果我通过 Excel 运行 ODBC 连接,我会得到我期望从数据库中看到的内容。当我将查询移植到 Xampp 进行测试时,我无法让查询在结果中显示小数点后第四位。

这是我在 Excel 中定义的 SQL 查询:

SELECT MC_BOM_DETAIL.finished_item, MC_BOM_DETAIL.item_num, MC_BOM_DETAIL.quantity, MC_BOM_DETAIL.line_num, IC_INVENTRY_MAST.um_stocking
FROM IC_INVENTRY_MAST IC_INVENTRY_MAST, MC_BOM_DETAIL MC_BOM_DETAIL
WHERE IC_INVENTRY_MAST.company = MC_BOM_DETAIL.company AND IC_INVENTRY_MAST.item_num = MC_BOM_DETAIL.item_num
ORDER BY MC_BOM_DETAIL.finished_item, MC_BOM_DETAIL.line_num

执行查询的php页面如下

//Define ODBC Connection
$mas_conn  =  odbc_connect("odbc_connection", "user_name", "password");

//Define Query
$query = "SELECT mbd.finished_item, mbd.item_num, mbd.line_num, mbd.quantity, icm.um_stocking
FROM IC_INVENTRY_MAST icm, MC_BOM_DETAIL mbd
WHERE icm.company = mbd.company AND icm.item_num = mbd.item_num
ORDER BY mbd.finished_item, mbd.line_num";

if($result=odbc_exec($mas_conn, $query)) {
     while(odbc_fetch_row($result)){
         echo odbc_result($result,'quantity') .'<br>';
      } 
}
odbc_free_result($result);
odbc_close($mas_conn);

结果总是被截断(不四舍五入)到小数点后第三位,但我需要精确到第四位。

我查看了 php.ini 文件,看看这是否可能是原因,但没有完成。

有人有什么建议吗?

感谢您的宝贵时间。

解决方案: 我的问题在于源数据中的数据定义。这有点棘手,因为数据库是只读的,并且 ODBC 驱动程序由第 3 方 (ProvideX) 提供。在与软件制造商的技术人员交谈后,我能够更改设置为十进制(8,3)的数据定义。为什么 Excel 可以读取第 4 位小数而 php odbc 连接无法读取仍然没有答案。我唯一的想法是因为 Excel 在本地运行。

【问题讨论】:

    标签: php sql excel odbc


    【解决方案1】:

    检查您的 Windows 本地化设置:

    面板控制->区域和语言->格式->附加设置->小数点后位数...

    【讨论】:

    • 已设置为 2,改为 4 仍未修复。
    • 尝试使用:odbc_setoption 进行更改精度。
    • odbc_field_len()/ 的结果是什么?
    • 感谢您的回复 AnR,odbc_field_len($result,'quantity') 是 8,因此对于小数点后 4 来说似乎足够长。我将研究 odbc_setoption。我只是觉得这必须与它的 PHP 部分有关,而不是 odbc 连接和查询,因为我在 Excel 和 PHP 中使用相同的连接。
    • odbc_field_type($result,'quantity') 是十进制
    猜你喜欢
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多