php - Access ODBC : Wrong value returned for numeric (integer) fields

标签 php ms-access odbc unixodbc

我正在构建一个需要导入 Microsoft Access 文件的应用程序。该应用程序是用php编写的,请按照以下教程设置环境。 (https://gist.github.com/amirkdv/9672857)

下载了 ODBC 驱动程序 libmdbodbc1,但获取数值时遇到问题。以为问题可能出在驱动上,于是下载了Easysoft提供的试用版驱动,没想到我也遇到了同样的问题。 (http://www.easysoft.com/products/data_access/odbc-access-driver/index.html#section=tab-1)

在我使用的文件中,我具有以下结构:

enter image description here

当我在数据库中运行查询时,它返回以下结果:

enter image description here

我通过 mb -tools 直接从命令行运行查询,因为起初我认为这可能是 PHP 的问题

我已经尝试了所有可以想象的方法,因为回溯了每一步,并且两个命令行(如 PHP)都得到了相同的结果。已经在另一台机器上进行了测试。

注意:我尝试查询其他文件并得到相同的错误,那么我相信问题不在于文件。

注2:我解决了这个问题。返回值是 double 格式的值。驱动程序可能是用 C 语言编写的,这种方式是双重的。通过将 EasySoft 驱动程序与 PHP 结合使用,我得到了正确的表示。很快问题就出在 libmdbodbc1 驱动程序上。我将寻找 EasySoft 驱动程序的替代品,因为它非常昂贵。

最佳答案

区号以浮点值的形式检索*, float 的默认格式(显然)是科学记数法,即

201 = 2.01 times 10 to the power of 2 --> 2.01000e+02

如果您的 ODBC 驱动程序(MDB 工具?)支持 CInt() 函数将值转换为整数,那么您可以使用

SELECT CInt(area_code) AS areacode ...

或者,如果这不起作用,您可以尝试使用 CONVERT() ODBC 函数

SELECT { fn CONVERT(area_code, SQL_INTEGER) } AS areacode ...

否则,您可以在使用 PHP 函数(如 intval() )检索该值后将其转换为整数。 .

* 发生这种情况的一种常见方式是将数值从 Excel 导入到 Access 中。默认情况下,数值会以 Double 形式导入到 Access 中,即使它们实际上只是 Excel 文档中的整数。

关于php - Access ODBC : Wrong value returned for numeric (integer) fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302707/

相关文章:

ms-access - 微软 Access : How to filter report on non-report field?

windows - 如何在 Windows 中从命令行为 *.accdb 创建用户 DSN?

PHP 5 :How can I extand a file in a higher directory?

php - 在 https 页面上有 http 链接但没有脚本或 css

mysql - 合并两个具有不同记录数的表

sql-server - 如何在 Access 2010 中使用 TSQL 执行以下多层透视?

python - 无法在Mac上导入Pyodbc

c++ - ODBC 连接未打开

php - 如何在 Codeception 中编写可重用的方法/操作?

php - 我需要帮助 python 代码将短信发送到存储在 mysql 数据库中的号码