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