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

时间:2014-03-03 21:00:58

标签: php string ms-access odbc

我目前正在使用PHP和MS Access。我有一个包含不同数据类型的简单表。与数据库的连接工作正常但是,如果我对查询执行var_dump,我会注意到所有数据类型都转换为字符串。 如果我使用与ASP相同的数据库,我得到的数据类型是正确的。问题似乎只有PHP和ODBC驱动程序 有没有办法让这些值具有正确的数据类型?
任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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