ODBC 连接仅返回字符串作为数据类型

Posted

技术标签:

【中文标题】ODBC 连接仅返回字符串作为数据类型【英文标题】:ODBC connection returns only strings as data type 【发布时间】:2014-03-03 21:00:57 【问题描述】:

我目前正在使用 php 和 MS Access。我有一个包含不同数据类型的简单表。与数据库的连接运行良好,但是,如果我对查询执行 var_dump,我注意到所有数据类型都转换为字符串。 如果我使用与 ASP 相同的数据库,我得到的数据类型是正确的。问题似乎只出在 PHP 和 ODBC 驱动程序上。 有什么方法可以使用正确的数据类型获取这些值? 任何帮助将不胜感激。

【问题讨论】:

没有代码,没有查询,不知道你的意思。 【参考方案1】:

虽然 PHP 中的 Access ODBC 连接确实将所有字段作为字符串返回,例如

array(5) 
  ["ID"]=>
  string(1) "1"
  ["TextField"]=>
  string(13) "This is text."
  ["IntegerField"]=>
  string(1) "3"
  ["DateTimeField"]=>
  string(19) "2014-03-01 00:00:00"
  ["CurrencyField"]=>
  string(8) "100.0000"

这并不重要,因为当您在计算中使用字符串时,PHP 只会将字符串转换为数字。 (或者,您可以按照here 的说明显式转换它们。)

唯一需要特殊处理的字段是日期/时间字段,然后您只需将它们传递给strtotime(),它们将被转换为 Unix 时间戳值:

$data = odbc_fetch_array($result);
$datetime = strtotime($data["DateTimeField"]);
echo '$datetime value is: ' . $datetime;
echo "\r\n\r\n";
echo '$datetime formatted with date("c", ...) is: ' . date("c", $datetime);

结果

$datetime value is: 1393650000

$datetime formatted with date("c", ...) is: 2014-03-01T00:00:00-05:00

【讨论】:

以上是关于ODBC 连接仅返回字符串作为数据类型的主要内容,如果未能解决你的问题,请参考以下文章

java通过各种类型驱动连接数据库

C++1-基本数据类型

如何在 ODBC 连接字符串中指定网络目录?

连接 jdbc odbc 驱动程序时出错

C语言ODBC操作数据库遇到的一些问题

C语言ODBC操作数据库遇到的一些问题