【问题标题】:ODBC connection returns only strings as data typeODBC 连接仅返回字符串作为数据类型
【发布时间】:2014-03-03 21:00:57
【问题描述】:
我目前正在使用 PHP 和 MS Access。我有一个包含不同数据类型的简单表。与数据库的连接运行良好,但是,如果我对查询执行 var_dump,我注意到所有数据类型都转换为字符串。
如果我使用与 ASP 相同的数据库,我得到的数据类型是正确的。问题似乎只出在 PHP 和 ODBC 驱动程序上。
有什么方法可以使用正确的数据类型获取这些值?
任何帮助将不胜感激。
【问题讨论】:
标签:
php
string
ms-access
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