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 连接仅返回字符串作为数据类型的主要内容,如果未能解决你的问题,请参考以下文章