使用PHP& ODBC_RESULT,为什么我会丢失第4个小数位

时间:2014-04-11 19:50:27

标签: php sql excel odbc

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

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

这是我在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);

结果总是被截断(不是舍入)到第3个小数位,但是我需要精度到第4个。

我浏览了一下php.ini文件,看看这可能是原因,但是很短暂。

有人有建议吗?

感谢您的时间。

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

1 个答案:

答案 0 :(得分:0)

检查Windows本地化设置:

面板控制 - >地区和语言 - &gt;格式 - &gt;其他设置 - &gt;小数点后没有数字......